- PR -

RaiseEventかなぁ

投稿者投稿内容
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-06-10 21:38
ありがとうございます。
もう少し具体的に書くと、
親コントロールの上に子コントロールが乗っていまして、
親コントロールのマウスダウンイベントが発生したら、子コントロールのマウスダウンイベントも発生させたいのです。
それで、やっかいなのが、親コントロールがマウスダウンされた時に子コントロールを作成し、Addして、子コントロールのマウスダウンイベントを発行したいのです。
子コントロールにパブリックなメソッドを用意して、そこでマウスダウンイベントを発行すればよいのかなとも思うのですが、やり方がわからなくて困っています。
よろしくお願いいたします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-06-10 23:11
諸農です。

引用:

それで、やっかいなのが、親コントロールがマウスダウンされた時に子コントロールを作成し、Addして、子コントロールのマウスダウンイベントを発行したいのです。



何のために子コントロールでイベントを発砲しなければならないのでしょうか?
子コントロールのマウスダウンイベントハンドラに結びつける予定の
MouseEventHandler型のメソッドを親コントロールの
マウスダウンイベントハンドラ内から呼び出せばいいのでは?

そもそも、子コントロールのマウスダウンイベント呼び出しメソッ
ドのOnMouseDownメソッドを親コントロールから呼び出せたとして
も、呼び出すその前に子コントロールのイベントにマウスダウンか
ら呼び出してもらうデリゲートを登録する必要がありますけど、
なんでまたそんなややこしい事をわざわざする必要があるのでしょうか?

引用:

子コントロールにパブリックなメソッドを用意して、そこでマウスダウンイベントを発行すればよいのかなとも思うのですが、やり方がわからなくて困っています。



Invoke()メソッド?


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-06-10 23:35
私が子コントロールでキーダウンを拾ったときはこんなでした。
this.ParentForm.KeyPreview = true ;
this.ParentForm.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FunctionKey_KeyDown);
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-11 08:52
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12279&forum=7&2
これの続き?

子コントロール
Public Class ChildControl
 Inherits System.Windows.Forms.Control

 Public Sub NastedOnイベント(e As EventArgs)
  Onイベント(e)
 End Sub
End Class


斜字体は、適宜変更のこと。
親のイベントハンドラから、子のNestedOnイベントメソッドをコールすればよい。
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-06-11 10:22
ご返答ありがとうございます。
でもVB.netではonではできませんでした。
「On Goto 及び On GoSubステートメントは現在サポートされていません」と、
出てしまいました。

スレッドが2つになってしまったのは、
返答と間違えて投稿してしまったからです。すいません。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-06-11 11:10
引用:

ひろこさんの書き込み (2004-06-11 10:22) より:
でもVB.netではonではできませんでした。
「On Goto 及び On GoSubステートメントは現在サポートされていません」と、
出てしまいました。


Jittaさんが仰っているのは、OnHogeHoge(e)という、通常のメソッド呼び出しです。
HogeHogeの部分にイベント名が入る感じになります。
※例えばOnClick等々
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-11 12:15
引用:

ひろこさんの書き込み (2004-06-11 10:22) より:

でもVB.netではonではできませんでした。
「On Goto 及び On GoSubステートメントは現在サポートされていません」と、
出てしまいました。


 あ〜、こういう返答は、まったく予想していませんでした

 えっと、名前付け規則でですね、イベントを発生させるメソッドは「On」+「イベント名」ってなっているんですね。で、
コード:
Public Sub NastedOnイベント(e As EventArgs) 
    Onイベント(e) 
End Sub


の部分は、例えばマウスダウンならば
コード:
Public Sub RaiseMouseDown(e As MouseEventArgs)
    MyBase.OnMouseDown(e)
End Sub


と、書きます。こっちの方が自然かな、と思ったので名前は修正しています。よくわかるように、MyBaseで修飾しました。
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-06-14 13:03
こんにちわ
ありがとうございます。
OnMouseDownでマウスダウンイベントが動きました。
でも、そのままMouseMoveとかはできないみたいで、また困っています。
これも同じようにするしかないのでしょうか?

スキルアップ/キャリアアップ(JOB@IT)