Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 多个按钮,一个事件可更改单击的按钮颜色_Vb.net_Button - Fatal编程技术网

Vb.net 多个按钮,一个事件可更改单击的按钮颜色

Vb.net 多个按钮,一个事件可更改单击的按钮颜色,vb.net,button,Vb.net,Button,下面显示的代码应允许页面上的任何按钮更改颜色,但第一条if语句中指定的按钮除外。此代码正在工作,但现在单击按钮时不执行任何操作。按钮应变为黄色,但仅保持默认颜色。还有,无论如何,我可以操纵代码,这样一次只能有一个按钮是红色的,而不允许有多个红色按钮。当读到这个。我找不到vb的任何帮助。有人能帮忙吗 就我个人而言,我认为这可能与Public Sub有关,因为当字段为空时,消息框不会出现 Public Sub btn_Click(ByVal sender As Object, ByVal e As

下面显示的代码应允许页面上的任何按钮更改颜色,但第一条
if
语句中指定的按钮除外。此代码正在工作,但现在单击按钮时不执行任何操作。按钮应变为黄色,但仅保持默认颜色。还有,无论如何,我可以操纵代码,这样一次只能有一个按钮是红色的,而不允许有多个红色按钮。当读到这个。我找不到vb的任何帮助。有人能帮忙吗

就我个人而言,我认为这可能与
Public Sub
有关,因为当字段为空时,消息框不会出现

Public Sub btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click
    Try
        Dim btn As Button = sender
        If btn.Name = "BtnUpdate" Or btn.Name = "BtnBackCust" Or btn.Name = "BtnConfirm" Then
        ElseIf TxtFirstName.Text = "" Or TxtLastName.Text = "" Or TxtAddress.Text = "" Or cboCountry.SelectedItem = "" Or cboRoomType.SelectedItem = "" Then
            MsgBox("You must populate all fields")
        Else
            btn.BackColor = Color.Red
            btn.Text = ChosenRoom
        End If
    Catch ex As Exception
    End Try
End Sub

不要使用
MyBase.Click
事件,而是为表单加载上的每个按钮创建句柄:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For Each Button As Button In Me.Controls.OfType(Of Button)()
        If Button.Name <> "BtnUpdate" AndAlso Button.Name <> "BtnBackCust" AndAlso Button.Name <> "BtnConfirm" Then
            AddHandler Button.Click, AddressOf ChangeColor
        End If
    Next
End Sub

不要使用
MyBase.Click
事件,而是为表单加载上的每个按钮创建句柄:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For Each Button As Button In Me.Controls.OfType(Of Button)()
        If Button.Name <> "BtnUpdate" AndAlso Button.Name <> "BtnBackCust" AndAlso Button.Name <> "BtnConfirm" Then
            AddHandler Button.Click, AddressOf ChangeColor
        End If
    Next
End Sub

也许如果你让代码抛出异常而不是隐藏它,你会发现你的问题。您是否尝试设置断点以查看单击断点时发生的情况?你确定它会在事件中发生吗?对于你的另一个问题,你可以在某个变量中保留当前红色按钮的名称。如果你让代码抛出异常而不是隐藏异常,你可能会发现你的问题。您是否尝试设置断点以查看单击断点时发生的情况?你确定它会出现在事件中吗?对于你的另一个问题,你可以在某个变量中保留当前为红色的按钮的名称。