2010-08-10 79 views
0

我有多个文本框,我希望它们在单击它们时执行相同的操作。默认情况下,我可以使用如下所示的textbox1.click处理单个文本框,但我不知道如何处理它们的倍数。当然,我可以为每个单独的文本框编写一个处理程序,但我有大约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 

回答

1

你为什么不创建一个可定制的文本框?

+1

这也是一个不错的选择。 – Shekhar 2010-08-10 05:46:52

1
If Button9.Text = "Make Changes" Then 

     If TextBox2.Text <> "" Then 

这两条线路都将是相同的,所有这些50个按钮?

如果是,那么我认为你可以为每个按钮的点击事件分配相同的事件处理程序。

其他方法是创建一个私有方法,它将一个字符串作为参数,并根据字符串是否为空来返回布尔值,并从所有50按钮的click事件中调用此方法。

1

如果您确实需要使用多个测试盒相同的点击处理程序,您可以使用AddHandler命令如图所示,每个测试盒的单击事件与处理程序相关联:

AddHandler TextBoxX.Click AddressOf TextBox1_Click 

你将需要将该语句添加到您的程序中(可能在表单加载例程中),为每个要处理的文本框添加一次。 (使用每个文本框的名称代替上述代码中的“TextBoxX”。)

+0

谢谢B皮特,这很容易。 – k80sg 2010-08-10 08:13:07

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