我有一個窗體,上面有40個不同的文本框。最近他們要求我添加功能,以便他們可以在按下Enter鍵時運行報告(而不是單擊按鈕)。 所以,我試圖在我的表單上創建一個通用的事件處理程序來捕獲在各種控件中引發的事件(而不是附加處理程序來控制我創建的)。 我有代碼正在運行,但事件似乎沒有起泡到主窗體。你能指出我錯過了什麼嗎?如何將事件從一類控件發佈到父窗體
Public Class TextboxSelect
Inherits System.Windows.Forms.TextBox
Public Sub New()
AddHandler Enter, AddressOf selectText
AddHandler KeyDown, AddressOf raiseEnterEvent
End Sub
Public Event enterPressed As EventHandler
Private Sub selectText(sender As Object, e As EventArgs)
Dim text As TextboxSelect = CType(sender, TextboxSelect)
text.SelectionStart = 0
text.SelectionLength = text.Text.Length + 1
End Sub
Public Sub raiseEnterEvent(sender As Object, e As KeyEventArgs)
RaiseEvent enterPressed(Me, New EventArgs)
If (e.KeyCode = Keys.Enter) Then
RaiseEvent enterPressed(Me, New EventArgs)
End If
End Sub End Class
主要形式:
Private Sub textboxEnterSearch(sender As Object, e As EventArgs) Handles this.enterPressed
MessageBox.Show("You hit enter in a textbox!")
End Sub
調試時,我提高enterPressed事件,但似乎該事件不冒泡的形式。
,那麼當你按下'Enter'任何你'TextBox'控制,代碼該按鈕將被運行。使用這個功能似乎你不需要編寫任何代碼來處理Enter鍵,對嗎? –
這是什麼?您必須將事件處理程序添加到所有文本框。 –
@RezaAghaei在理論上,如果我這樣做,我不需要textboxSelect類中的代碼,但是如果用戶在不在文本框中時按下Enter鍵,它會不會導致它運行? – Rolan