我在TextBox中遇到此问题。用户在TextBox中输入文本/字符串,此字符串将作为xml文件中的属性值导出。是否有某种方法可以禁止用户输入(键入+粘贴)禁止(对于xml格式)字符,如欧元符号?
答案 0 :(得分:0)
而不是限制用户,您可以在传递给xml之前过滤掉您不想要的所有字符。
string textToPAss = ReplaceInvalidCharacters(yourTextbox.Text);
public string ReplaceInvalidCharacters(string toReplace)
{
toReplace = toReplace.Replace("€","");
//similarly do for all others unwanted characters
return toReplace;
}
答案 1 :(得分:0)
处理KeyPress事件
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '€')
e.Handled = true;
}
答案 2 :(得分:0)
无效的XML字符具有有效的XML等效字符。因此,如果您可以将输入转换为有效的XML,那么最终结果将是有效的XML。
inputText = SecurityElement.Escape(inputText);
答案 3 :(得分:0)
这将阻止字母a被输入文本框。
private void textBox1_TextChanged(object sender, EventArgs e)
{
int pos = (sender as TextBox).Text.IndexOf("a");
(sender as TextBox).Text = (sender as TextBox).Text.Replace("a", "");
if (pos!= -1)
(sender as TextBox).Select(pos, 0);
}
但是,正如Somesh Mukherjee说的那样,过滤掉无效的字符。一个简单的String.Replace()
就可以了。
答案 4 :(得分:0)
以下是您正在寻找的代码示例:
class MyTextBox : TextBox
{
protected override void WndProc(ref Message m)
{
// Trap WM_PASTE:
if (m.Msg == 0x302 && Clipboard.ContainsText())
{
var removedInvalid = from c in Clipboard.GetText()
where XmlConvert.IsXmlChar(c)
select c;
SelectedText = new string(removedInvalid.ToArray());
return;
}
base.WndProc(ref m);
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!XmlConvert.IsXmlChar(e.KeyChar))
e.Handled = true;
base.OnKeyPress(e);
}
}
以上内容可防止用户将无效的XML字符笔划或粘贴到文本框中。