0

datagirdview、パネル、メニューストリップ、ボタン、テキストボックス、ラベルなど、フォーム内のコントロールがクリックされたときにフォームをアクティブにする簡単な方法はありますか.

私のプロジェクトは多くの異なるフォームを表示することがあり、アクティブなフォームの背面にあるフォームをアクティブにするのは困難です。フォームをアクティブにするには、フォームの境界をクリックする必要があります。

4

2 に答える 2

1

あなたの質問はまったく明確ではなく、何をアーカイブしようとしているのかわかりませんが、クリックイベントで何かを実行するには、すべてのコントロールにハンドラーを追加する必要があります。

動的に宣言していない場合:

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)

于 2013-04-10T07:23:03.377 に答える
1

フォームが MDI 子であるため、問題が発生する可能性が最も高くなります。フォームをアクティブにするには、メニュー バーをクリックする必要があります。ただし、ボーダーレス フォームの場合、コントロールをクリックしてもフォームがアクティブになりません。 MDI では発生しますが、通常の winform では発生しないはずです。プロセスを妨げるバックグラウンドで他の実行中のイベントがない限り。

于 2013-08-28T03:44:46.703 に答える