我是编程新手,我试图创建一个只接受字母和数字的文本框。我已经搜索了解决方案,但我无法找到我想要的内容。这是我到目前为止所做的:
private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Space)
{
e.Handled = true;
}
var regex = new Regex(@"[^a-zA-Z0-9\s]");
if (regex.IsMatch(e.Key.ToString()))
{
e.Handled = true;
}
}
我可以删除正则表达式的数字以防止用户输入特殊字符,但这也会限制他们输入数字。此文本框将是Windows 8商店应用程序的一部分,我正在使用C#。希望有人可以帮助我。谢谢!
编辑:
我必须放弃限制用户在文本框中输入特殊字符,因为我没有接近它。我做的是我使用了我的第一个代码,但有一些变化。
private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Enter)
{
var regex = new Regex(@"[^a-zA-Z0-9\s]");
if (regex.IsMatch(TB1.Text))
{
t1.Text = "Can't contain special characters.";
}
}
}
而不是在" IsMatch"中使用测试中的按键。我在文本框中使用了文本。 if if语句将过滤文本框中是否存在除数字和字母之外的其他字符,因此我创建了一个文本块,用于评论文本框中是否有特殊字符。
答案 0 :(得分:1)
如果您想使用 Regex ,请使用以下正则表达式来匹配。
^[a-zA-Z0-9]*$
使用示例:
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString))
{
...
}
答案 1 :(得分:0)
我之前的回答是不正确的,因为我在VirtualKey如何工作方面犯了一个错误(它不是char值)。
虚拟键具有0到9的任何数字的定义值,小写字母A(a)和大写字母A(A)具有相同的数字,所以如果我首先引导您走错方向,我很抱歉。
if(e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Z) e.Handled = false;
此代码应检查您的键值是否高于或等于Number0(48)的值且低于或等于Z | z(90)。
您可以阅读有关VirtualKey here
的更多信息答案 2 :(得分:0)
在文本框的KayPress事件中输入以下行。它不允许用户输入任何alphabate或任何数字。只允许符号输入:
e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ? false:true;
示例代码:
private void yourTextBoxName_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ?false:true;
}