-1

在 Microsoft Visual Basic 2010 中,表单有一个名为 AcceptButton 的属性。这可以在设计器中设置为表单的确定按钮,也可以通过代码设置,如下所示Me.AcceptButton = Me.OKbutton

我想知道如何在代码中禁用此属性,例如Me.AcceptButton = Null注意这不起作用。在设计器中,可以将此属性设置为(无)。

我想知道如何实现这一点的原因如下。我有一个用户输入数据的文本框;当他们按下回车键时,错误检查就完成了。这使用以下代码

    Private Sub textbox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textbox1.KeyDown
    If e.KeyCode = Keys.Return Then

我遇到的问题是,如果启用了 AcceptButton 属性,则此代码不会运行,因为返回键的双重用途。因此,我想暂时禁用然后使用代码重新启用 AcceptButton 属性。

如果我不设置 AcceptButton,则此代码将运行。

4

4 回答 4

2

不要修改 AcceptButton 属性,它会向用户提供重要的反馈。修复真正的问题,将 TextBox 的 AcceptsReturn 属性设置为 True。

于 2013-05-20T13:09:31.707 回答
1

如果您仍想禁用接受按钮,请使用 Me.AcceptButton = Nothing

于 2013-05-20T14:38:02.910 回答
0

设置AcceptButton() 属性。然后,在您的 KeyDown() 处理程序中,如果按下回车并且一切都通过了您的测试:

OKbutton.PerformClick()
于 2013-05-20T12:54:53.607 回答
0

另一种方法是禁用您的按钮,然后仅在满足您的条件时重新启用它。然后,您不必在 TextBox 处理程序中捕获 Enter。这是一个简单的例子:

Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.AcceptButton = Me.OKbutton
        Me.OKbutton.Enabled = False
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As System.EventArgs) Handles TextBox1.TextChanged
        ValidateEntries()
    End Sub

    Private Sub ValidateEntries()
        ' ... put your logic in here to determine if all the fields in the form are in a valid state ...
        ' set the Enabled state of OKbutton accordingly:

        Dim valid As Boolean = True ' assume valid until proven otherwise

        ' Made up validation code:
        Dim value As Integer
        If Integer.TryParse(TextBox1.Text, value) Then
            If value < 60 Then
                valid = False
            End If
        Else
            valid = False
        End If

        Me.OKbutton.Enabled = valid
    End Sub

    Private Sub OKbutton_Click(sender As Object, e As System.EventArgs) Handles OKbutton.Click
        MessageBox.Show("OK")
    End Sub

End Class
于 2013-05-22T14:37:15.137 回答