フォームに〜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イベントを上げましたが、そのイベントがフォームにバブルアップされていないようです。
をあなたの 'Form'の' AcceptButton'としてボタンを設定した場合、あなたは 'TextBox'のコントロールのいずれかに' Enter'、コードを押してください:差別さまざまなコントロールを選択するための
コードそのボタンが実行されます。この機能を使用すると、Enterキーを処理するためのコードを書く必要はありませんか? –
「this」とは何ですか?すべてのテキストボックスにイベントハンドラを追加する必要があります。 –
@RezaAghaei理論的には、私がそれをした場合、textboxSelectクラスのコードは必要ありませんが、テキストボックスにないときにユーザーがEnterキーを押した場合でも実行されませんか? – Rolan