- - PR -
Eventの関連づけに関して
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-20 15:15
〔会議室選択を誤ってしまい、2度の投稿お許し下さいませ〕
以下のように Formにあるボタンコントロールを まとめてイベントに関連づけ処理しようとし、 Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is Button Then AddHandler ctrl.Click, AddressOf cmdButtons_Click AddHandler ctrl.MouseHover, AddressOf cmdButtons_MouseHover AddHandler ctrl.MouseLeave, AddressOf cmdButtons_MouseLeave End If Next の部分で、Me.Controls にすると、イベントは関連できたのですが、 アプリ終了時、以下のようにエラー中断してしまいます。 「このフォームの MDIParent として指定されたフォームは MDIContainer ではありません。」 で、Meがだめなのか、と思い、 Dim f As New frmMain Dim ctrl As Control For Each ctrl In f.Controls とすると、コントロールは認識するんですが、 肝心のAddHandler がうまくいかずに関連づけできません(謎) 中断のエラーはなく普通に終了できます。 Meの使いかたや、MDIフォームで何か制限とかあるのでしょうか。。 -- MDIフォーム表示コード部: Private Sub cmdButtons_Click(ByVal sender As System.Object, ByVal e As EventArgs) Dim fmdi As Form Dim frm As New Form Select Case sender.name Case "cmdButton1" frm = New frmChild1(Me) Case "cmdButton2" frm = New frmChild2(Me) Case "cmdButton3" : End Select For Each fmdi In Me.MdiChildren If fmdi.Name = frm.Name Then Exit Sub End If Next frm.MdiParent = Me frm.Show() | ||||||||
|
投稿日時: 2004-05-21 01:31
諸農です。
何となく言わんとしている事は判りそうなんですが、 私の読解力不足のため、何がダメなのか全くわかり ませんでした。 1.MDIアプリを作っている 2.MDI子フォーム上のボタンクリックで、別途用意したイベント メソッドを当該のMDI子フォーム上のボタンコントロールの Click、MouseHover,MouseLeaveイベントにセットしたい。 問題 1.アプリ終了時にエラーが出る 試みた対策 1.MDI親フォームで New frmMain とし、インスタンスが格納 された変数を利用してそのフォーム上のボタンコントロール のClick、MouseHover,MouseLeaveイベントにメソッドを セットしてみた。 結果 1.MDI子フォームのボタンコントロールをクリックしても、 マウスが通過しても、イベントが発生しない(メソッドが呼ばれない) と言う事でしょうか? ところで、以下のコードですが、これはイベントに登録したいメソッドですか? それとも何か別の処理ですか?
_________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-21 09:23
Jubei様
私の下手な説明で申し訳ありません。 まず、投稿したコードは、全てfrmMain(MDIコンテナ)上のコードです。 ・MDIアプリで、frmMain が親コンテナ ・MDI子フォームが Child1, Child2, と5つ程度 ・親frmMain にメニューのようなイメージでボタンがあります。 そのfrmMain.button 全てに別途用意したメソッド、Private Sub cmdButtons_Click ... MouseHover,MouseLeave をセットしたい。 ・例のコードは、登録したい子フォームを表示するイベント。 というものでした。 で、昨日から色々やっていたのですが、 単純に、 Private Sub cmdButtons_Click(ByVal sender As System.Object, ByVal e As EventArgs) Dim fmdi As Form Dim frm As New Form Me.IsMdiContainer = True ' ここで明示 Select Case sender.name としたら、エラーもなくなりました。。。。。? プロパティが途中で消えるのか?という感じです。 なんかお騒がせしてしまったようで申し訳ありません。 投稿前にもう少しがんばるようにしなきゃいけませんね。 |
1