我有一个带有各种文本框的表单。一个文本框用于输入浮点数,因此我使用TextBox.KeyPress依次处理每个数字,这只会修改Text属性。文本由按下OK按钮id时(在关闭表单之前)调用的例程处理。它也由TextBox.Leave事件调用。但是,如果我更改文本框的内容,则按Return to variable不会更新。
我以为我可以通过以下方式解决这个问题:
private void DestPointNoTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
{
prvUpdateDestPointNo();
}
}
只要在文本框处于焦点时按下某个键,就会调用此方法,这可以通过在其中设置断点来证明。但是,按下Return键时不会调用它。
有人可以解释在按下Return键时我如何确保处理新文本? 如果我更改了其中的内容,请单击“确定”按钮新的
答案 0 :(得分:1)
如果您使用的是Windows窗体应用程序,则可以将窗体的AcceptButton属性设置为“确定”按钮,按Enter /返回键时将触发“确定”按钮的“单击”事件
答案 1 :(得分:1)
我会使用调试器在运行时确定e.KeyCode
的值。
为什么呢?
当我运行类似的代码(Winforms TextBox,KeyDown注册)时,e.KeyCode的值是
e.KeyCode = LButton | MButton | Back
您可以使用的KeyEventArgs
的另一个属性是KeyValue
-
private void DestPointNoTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
prvUpdateDestPointNo();
}
}