我想在我的wpf应用程序中创建一个只接受整数值的文本框。如果有人在[a-z]之间键入字符,文本框将拒绝它。因此它不会显示在文本框中
答案 0 :(得分:7)
您可以处理PreviewTextInput事件:
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
// Filter out non-digit text input
foreach (char c in e.Text)
if (!Char.IsDigit(c))
{
e.Handled = true;
break;
}
}
答案 1 :(得分:1)
您可以添加TextChanged
事件的句柄并查看输入的内容(每次都需要检查所有文本以防止从剪贴板粘贴字母)。
另请参阅在CodeProject上创建可屏蔽编辑框的一个很好的示例。
答案 2 :(得分:1)
在WPF中,您可以像这样处理KeyDown
事件:
private void MyTextBox_KeyDown(object sender, KeyDownEventArgs e)
{
e.Handled = true;
}
答案 3 :(得分:1)
这个简单的代码片段应该可以解决问题..您可能还想检查溢出(数字太大)
private void IntegerTextBox_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i < Text.Length; i++)
{
int c = Text[i];
if (c < '0' || c > '9')
{
Text = Text.Remove(i, 1);
}
}
}
答案 4 :(得分:1)
将其绑定到Integer属性。 WPF将自行进行验证而不会有任何额外的麻烦。