datagirdview、パネル、メニューストリップ、ボタン、テキストボックス、ラベルなど、フォーム内のコントロールがクリックされたときにフォームをアクティブにする簡単な方法はありますか.
私のプロジェクトは多くの異なるフォームを表示することがあり、アクティブなフォームの背面にあるフォームをアクティブにするのは困難です。フォームをアクティブにするには、フォームの境界をクリックする必要があります。
あなたの質問はまったく明確ではなく、何をアーカイブしようとしているのかわかりませんが、クリックイベントで何かを実行するには、すべてのコントロールにハンドラーを追加する必要があります。
動的に宣言していない場合:
Private Sub ControlsClick(sender As Object, e As EventArgs) _
Handles Panel1.Click, Button1.Click, TextBox2.Click ' etc.
Me.Activate 'Or Whatever
End Sub
コントロールごとにハンドラーを追加する必要があります。動的に行う場合も同じです:
Private Sub InitializeClickHandlers(sender As Control, Optional bChilds As Boolean = True)
For Each elem As Control In sender.Controls
AddHandler elem.Click, AddressOf ControlsClick(elem, New EventArgs)
If bChilds AndAlso elem.Controls.Count > 0 Then
Call InitializeClickHandlers(sender)
End If
Next
End Sub
次に、フォーム内のすべてのコントロールに対して、次のように呼び出します。Call InitializeClickHandlers(Me)
または、パネル内のすべてのコントロールに対して:Call InitializeClickHandlers(Panel1)
フォームが MDI 子であるため、問題が発生する可能性が最も高くなります。フォームをアクティブにするには、メニュー バーをクリックする必要があります。ただし、ボーダーレス フォームの場合、コントロールをクリックしてもフォームがアクティブになりません。 MDI では発生しますが、通常の winform では発生しないはずです。プロセスを妨げるバックグラウンドで他の実行中のイベントがない限り。