tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルフォームのClickイベントをどこでもできないか
記事No5543
投稿日: 2007/05/23(Wed) 14:22
投稿者権太郎
使用言語 VB2005

いつも参考にさせていただいております。ありがとうございます。
さて 質問ですが

フォームのClickイベントは 
そのクリックした場所に他のコントロールが無い場合発生するようですが
コントロールがある場所においても
フォームのClickイベントが発生できないものでしょうか?
フォーム・コントロール イベント発生の順序は問いません。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: フォームのClickイベントをどこでもできないか
記事No5545
投稿日: 2007/05/23(Wed) 15:12
投稿者花ちゃん
他にも色々あるかも知れませんが簡単なところでは、下記でもOKかと。

Private Sub Form1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Click, Button1.Click

End Sub

[ツリー表示へ]
タイトルRe^2: フォームのClickイベントをどこでもできないか
記事No5553
投稿日: 2007/05/24(Thu) 11:16
投稿者権太郎
こんにちわ
早速の返答ありがとうございました。

コントロールが増えると そのコントロール.Click をコードで付け続け
Form1_Clickのイベントハンドラを共有する方法しかないわけですね。

では、フォームに配置されているコントロールをすべて取得し
AddHandlerで関連づけることができないかと考えました。

フォーム内のコントロールをすべて取得する方法はございますか?

よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: フォームのClickイベントをどこでもできないか
記事No5554
投稿日: 2007/05/24(Thu) 11:21
投稿者魔界の仮面弁士
Controls プロパティを使ってみては如何でしょう?
なお、孫要素も列挙するために、再帰処理が必要です。

[ツリー表示へ]
タイトルRe^4: フォームのClickイベントをどこでもできないか
記事No5560
投稿日: 2007/05/25(Fri) 00:15
投稿者権太郎
花ちゃん様 魔界の仮面弁士様 どうもありがとうございました。

CONTROLSプロパティにて フォーム内コントロールは取得できました。

Private Sub Form1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Click, Button1.Click・・・・・
このコードの Handles 以下の記述方法が解っておりません。
どのような方法なのでしょうか?

よろしくお願いします。

[ツリー表示へ]
タイトルRe^5: フォームのClickイベントをどこでもできないか
記事No5562
投稿日: 2007/05/25(Fri) 02:28
投稿者るしぇ
AddHandler を使うのではないのですか?
必要ありません。AddHandler のヘルプ(MSDN)に
使用方法が載ってますので読んできてください。

[ツリー表示へ]
タイトルRe^5: フォームのClickイベントをどこでもできないか
記事No5563
投稿日: 2007/05/25(Fri) 06:57
投稿者花ちゃん
下記サイトの解説の方が解り易いかも。

KEN's .NET [特集2] VB.NETのイベントの扱い方
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp02_event.html

[ツリー表示へ]
タイトル(解決済み)Re^6: フォームのClickイベントをどこでもできないか
記事No5565
投稿日: 2007/05/25(Fri) 12:23
投稿者権太郎
どうも 皆様貴重な返答ありがとうございました。
おけげさまで できました。

また 次回もありましたら よろしくお願いします。

[ツリー表示へ]
タイトルRe: (解決済み)Re^6: フォームのClickイベントをどこでもできないか
記事No5567
投稿日: 2007/05/25(Fri) 18:25
投稿者KG
Private Sub SetEvents(ByVal ctrls As System.Windows.Forms.Control.ControlCollection)
   For Each ctrl As Control In ctrls
     If ctrl.HasChildren Then
       SetEvents(ctrl.Controls)
     ElseIf ctrl.GetType Is GetType(Button) Then
       AddHandler ctrl.MouseEnter, AddressOf Buttons_MouseEnter
       AddHandler ctrl.MouseLeave, AddressOf Buttons_MouseLeave
     End If
   Next
End Sub

似たような処理をしたことがあるので参考までに。

[ツリー表示へ]
タイトルRe^2: (解決済み)Re^6: フォームのClickイベントをどこでもできないか
記事No5572
投稿日: 2007/05/27(Sun) 04:57
投稿者権太郎
KG様 ありがとうございました。

> 似たような処理をしたことがあるので参考までに。

私も いろいろ探しまして ほとんど同じコードで解決しました。

またよろしくお願いします。

[ツリー表示へ]