1

我有一个带有各种文本框的表单。一个文本框用于输入浮点数,所以我使用 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 时处理新文本吗?如果我更改一个的内容然后单击 OK 按钮新的

4

2 回答 2

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();
    }
}
于 2013-09-02T01:09:12.943 回答
1

如果您使用的是 Windows 窗体应用程序,则可以将 Form 的 AcceptButton 属性设置为 OK 按钮,当您按下 Enter/Return 键时,将触发 OK 按钮的 Click 事件

于 2013-09-02T01:03:05.770 回答