我有一个文本框,不允许输入任何特殊字符。
用户可以输入:
怎样才能让KeyDown
事件做到这一点呢?
发布于 2009-07-28 03:51:11
private void _txtPath_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Key < Key.A) || (e.Key > Key.Z))
e.Handled = true;
}
发布于 2009-05-26 11:11:46
处理KeyDown或KeyPress事件是实现此目的的一种方法,但是程序员通常会忘记,用户仍然可以将无效文本复制粘贴到文本框中。
一种更好的方法是处理TextChanged事件,并去掉那里的任何有问题的字符。这有点复杂,因为您必须跟踪插入符号的位置,并在更改框的Text属性后将其重新设置到适当的位置。
根据您的应用程序的需要,我只需要让用户输入他们想要的内容,然后在用户尝试提交时标记文本框(将文本变为红色或其他什么)。
发布于 2014-03-13 23:08:18
我只想为那些通过搜索结束的人添加一些代码:
private void Filter_TextChanged(object sender, EventArgs e)
{
var textboxSender = (TextBox)sender;
var cursorPosition = textboxSender.SelectionStart;
textboxSender.Text = Regex.Replace(textboxSender.Text, "[^0-9a-zA-Z ]", "");
textboxSender.SelectionStart = cursorPosition;
}
这是一个更改过滤器,因此可以处理复制和粘贴,并保留光标位置,以便在中间更改文本正常工作。
注意,它使用'sender‘来获取控件名称,允许这一个函数链接到多个文本框,假设它们需要相同的过滤器。您可以通过转到控件的事件部分并手动选择TextChanged事件的函数来链接多个控件。
https://stackoverflow.com/questions/910063
复制相似问题