c#。用户只能在两个文本框中键入数字

c#。用户只能在两个文本框中键入数字,c#,wpf,visual-studio,C#,Wpf,Visual Studio,我试着寻找一些关于如何让用户只输入数字而不是字母的技巧。我想在上面显示一条消息,以便用户知道他们需要键入一个数字。我想要一些关于如何实现这个条件的建议 (这是在WPF c#visual studio中完成的) private void Add\u单击(对象发送者,路由目标) { //文本框 number1=转换为32(TextBox1.Text); number2=转换为32(TextBox2.Text); //如果数字1和数字2小于1 如果(数字1100) { MessageBox.Show(

我试着寻找一些关于如何让用户只输入数字而不是字母的技巧。我想在上面显示一条消息,以便用户知道他们需要键入一个数字。我想要一些关于如何实现这个条件的建议

(这是在WPF c#visual studio中完成的)

private void Add\u单击(对象发送者,路由目标)
{
//文本框
number1=转换为32(TextBox1.Text);
number2=转换为32(TextBox2.Text);
//如果数字1和数字2小于1
如果(数字1<1 | |数字2<1 | |数字1>100 | |数字2>100)
{
MessageBox.Show(“无效输入”);
TextBox1.Text=“”;
TextBox2.Text=“”;
}
否则,如果(!成功)
{
MessageBox.Show(“请键入一个数字”);
success=int.TryParse(TextBox1.Text,输出编号1);
success=int.TryParse(TextBox2.Text,输出编号2);
}
//操作
答案=1号+2号;
//
//单击时
answerText.Text=answer.ToString();
}`

你走错了路。在WPF中,可以对给定类型的公共getter/setter进行“绑定”。框架本身进行转换并允许正确的值,而无需您尝试和解析它

例如,在代码隐藏(.cs部分)中,为用于输入的内容创建公共属性。例:

// This is a public getter/setter for binding and defaults its value to 27.
public int MyTextInput {get; set; } = 27;
我将默认值设置为27的唯一原因是,当您完成绑定并运行表单时,如果表单在最初显示时显示27,您就知道它工作正常。如果不正确,那么您的绑定/数据上下文不正确,必须首先修复该部分。但一旦完成,您应该很好,可以将默认值更改回0

然后,在表单上宽度足以显示2位数字的单个文本框中,将绑定到此属性设置为(如果表单是使用网格对齐的,则可能需要指定网格行/列)


现在,当您运行表单时,textbox控件将作为整数数据类型“绑定”到类的公共属性“MyTextInput”。如果您尝试输入字符,wpf将自动显示带有红色边框的框,表示无效值

然后,无论单击/按钮处理程序是什么,您都可以查看“MyTextInput”值并进行相应的处理

显然,如果您有多个期望的实际值,那么只需创建两个公共属性和两个文本框条目,每个条目都绑定到您所提供的相应公共属性

// This is a public getter/setter for binding and defaults its value to 27.
public int MyTextInput {get; set; } = 27;
    <TextBox Text="{Binding MyTextInput}" MaxLength="2" />