VB.NET:输入按下后会退出对话框吗?

时间:2009-08-29 00:44:37

标签: vb.net combobox

我的问题似乎很简单,但它不是直观的方式。

我正在设计一个Windows窗体应用程序,并且有一个对话框在按下回车键时不应该退出,而是必须先验证数据,以防在更改的文本后按下输入组合框

如果 e Enter ,我已经尝试告诉它如何处理 ComboBox KeyPress 事件 em> key:

Private Sub ComboBoxSizeChoose_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBoxSizeChoose.KeyPress
    If e.KeyChar = Convert.ToChar(Keys.Enter) Then
        Try
            TamanhoDaNovaFonte = Single.Parse(ComboBoxSizeChoose.Text)
        Catch ex As Exception
            Dim Dialogo2 As New Dialog2
            Dialog2.ShowDialog()
            ComboBoxSizeChoose.Text = TamanhoDaNovaFonte
        End Try
    End If
End Sub

但到目前为止没有成功。按 Enter 键时,即使组合框处于焦点,整个对话框也会关闭,返回上一个表单。验证未完成,必须在退出之前完成。事实上,我甚至不想退出表单的输入KeyPress,整个对话框中输入键的唯一目的是验证ComboBox(但只有在焦点时,为了直观的用户界面)。 / p>

如果密钥是 Enter ,我还尝试将验证附加到整个对话框表单的KeyPress事件中。没有成功!这就像我的代码根本就没有。

我该怎么办?

(Visual Studio 2008,VB.NET)

2 个答案:

答案 0 :(得分:3)

确保在对话框中没有设置为DialogResult.None以外的其他按钮。

例如,如果您将按钮设置为DialogResult.OK,它将作为“默认”按钮并关闭您的表单。

答案 1 :(得分:0)

虽然不是你的答案,但我建议不要使用异常来控制逻辑流程。也就是说,尝试Single.TryParse而不是让你的流量减少......好吧,例外。

要更改您看到的行为,请将对话框的AcceptButton从“Ok”按钮更改为“none”。将该按钮的DialogResult更改为None不会使click事件无法触发,只能关闭对话框。虽然这种行为可能听起来像你想要的,但结果并非如此。