📄 compositeinput.cs
字号:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Xml;
using System.Collections;
namespace CompositeInput
{
/// <summary>
/// WebCustomControl1 的摘要说明。
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:ComInput runat=server></{0}:ComInput>")]
public class ComInput : Control, INamingContainer
//标识在 Page 对象的控件层次结构内创建新 ID 命名空间的容器控件。这仅是一个标记接口。
{
private string strFileName = "bad_words.xml";
private Label label;
public string FileName
{
get
{
return strFileName;
}
set
{
strFileName = value;
}
}
//以用户提交的文本内容为输入参数。如果用户提交的内容包含攻击性言辞,
//则返回修改后的版本,
//否则,直接返回原始的文本。
public string CheckString(string InputString)
{
ArrayList alWordList = new ArrayList();
string xmlDocPath = this.Page.Server.MapPath("bad_words.xml");
XmlTextReader xmlReader = new XmlTextReader(xmlDocPath);
string asterisks = "*************************";
// 将定义攻击性言辞的xml文件内容读入到一个ArrayList
while (xmlReader.Read())
{
if(xmlReader.NodeType==XmlNodeType.Text)
alWordList.Add(xmlReader.Value);
}
xmlReader.Close();
//检查用户提交的文本内容,将攻击性言辞替换为适当数量的星号
foreach(string element in alWordList)
InputString=InputString.Replace(element,asterisks.Substring(1, (element.Length)));
return InputString ;
}
public string Text
{
get
{
EnsureChildControls();
return label.Text;
}
set
{
EnsureChildControls();
label.Text = value;
}
}
public event CheckEventHandler Check;
protected virtual void OnCheck(CheckEventArgs ce)
{
if (Check != null)
{
Check(this,ce);
}
}
protected override void CreateChildControls()
{
Controls.Add(new LiteralControl("<h3>请在下面输入文字内容: "));
TextBox box1 = new TextBox();
box1.Text = "";
Controls.Add(box1);
Controls.Add(new LiteralControl("</h3>"));
Button button1 = new Button();
button1.Text = "提交";
Controls.Add(new LiteralControl("<br>"));
Controls.Add(button1);
button1.Click += new EventHandler(this.ButtonClicked);
Controls.Add(new LiteralControl("<br><br>"));
label = new Label();
label.Height = 50;
label.Width = 500;
label.Text = "";
Controls.Add(label);
}
protected override void OnPreRender(EventArgs e)
{
((TextBox)Controls[1]).Text = "";
}
private void ButtonClicked(Object sender, EventArgs e)
{
OnCheck(new CheckEventArgs(((TextBox)Controls[1]).Text,CheckString(((TextBox)Controls[1]).Text)));
}
}
public class CheckEventArgs : EventArgs
{
private bool match = false;
public CheckEventArgs (string str1,string str2)
{
if (str1 == str2)
{
match = true;
}
}
public bool Match
{
get
{
return match;
}
}
}
public delegate void CheckEventHandler(object sender, CheckEventArgs ce);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -