我有多个文本框,我希望他们在点击它们时执行相同的操作。默认情况下,我可以使用句柄textbox1.click为1单个文本框,如下所示,但我不知道如何处理它们的倍数。当然,我可以为每个文本框编写一个处理程序,但我有大约50个文本框。我相信必须有一种更有效的方式。请指教。感谢。
Sub TextBox1_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Click
If Button9.Text = "Make Changes" Then
If TextBox2.Text <> "" Then
Frm_Cine1.Show()
Frm_Cine1.chooseCine(ComboBox1.SelectedItem)
Else
MsgBox("Please check input!")
Exit Sub
End If
End If
End Sub
答案 0 :(得分:1)
If Button9.Text = "Make Changes" Then If TextBox2.Text <> "" Then
对于所有这50个按钮,这两行是否相同?
如果是,那么我认为你可以为每个按钮的点击事件分配相同的事件处理程序。
其他方法是,创建一个私有方法,它接受一个字符串作为参数,并根据您的字符串是否为空而返回布尔值,并从所有50个按钮的单击事件中调用此方法。
答案 1 :(得分:1)
为什么不创建可自定义的文本框?
答案 2 :(得分:1)
如果确实需要为多个测试框使用相同的单击处理程序,则可以使用AddHandler命令将每个测试框的单击事件与处理程序例程相关联,如下所示:
AddHandler TextBoxX.Click AddressOf TextBox1_Click
对于要处理的每个文本框,您需要将此语句添加到程序中(可能在表单加载例程中)。 (使用每个文本框的名称代替上面代码中的“TextBoxX”。)
答案 3 :(得分:1)
感谢你的所有建议,我不确定这是你们的建议,但显然我希望它能起作用:
Sub TextBoxs_click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles TextBox2.Click, TextBox3.Click, TextBox4.Click 'This part is disturbing if I have 50 textboxes...
'For Each obj As Control In Panel2.Controls
If sender.GetType.ToString = "System.Windows.Forms.TextBox" Then
Dim txtbox As TextBox = sender
textbox_verification(txtbox)
End If
'Next
End Sub
Sub textbox_verification(ByVal txtbox As TextBox)
If Button9.Text = "Make Changes" Then
If txtbox.Text <> "" Then
Frm_Cine1.Show()
Frm_Cine1.chooseCine(ComboBox1.SelectedItem, "FILE1-->This should be a variable")
Else
MsgBox("Please check timings input!")
Exit Sub
End If
End If
End Sub