2010-08-10 80 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