C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: MouseDownイベントの書き換え


(過去ログ 117 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■68643 / inTopicNo.1)  MouseDownイベントの書き換え
  
□投稿者/ wankuma_fun (8回)-(2013/11/02(Sat) 22:18:37)

分類:[C#] 

[開発環境]
Windows7 64but C#2010Express

wankuma_funです。
最近ドラッグ&ドロップを調べています。

protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
/// 略 ///
}

このようなOnMouseDownイベントをもつ拡PictureBoxクラスがあるのですが、
+=と-=を使って別のMouseDownイベントに書き換えたいです。
たとえばClickハンドラを外から追加した場合は↓のようなものでいけるとおもいます。
this.button1.Click -= new EventHandler(button1_Click); 
というような式を作ると思うのですが、今回の場合はどう記述すればよいでしょうか。
それでは失礼します。

引用返信 編集キー/
■68645 / inTopicNo.2)  Re[1]: MouseDownイベントの書き換え
□投稿者/ Hongliang (113回)-(2013/11/03(Sun) 01:34:34)
「別のMouseDownイベント」の意味が分かりませんでした。

> this.button1.Click -= new EventHandler(button1_Click); 

この場合、「button1インスタンスのClickイベントから、イベントハンドラとして関連づけられているbutton1_Clickメソッドを1つ削除する」という意味になりますが、「どのインスタンスの」Clickイベントから「どのメソッドを」削除したいと言うことでしょうか?

// そもそもOnMouseDownはイベントではないですが。イベントを発生させるためのメソッドであって。
// 派生クラスであればそこに処理を記述することでイベントと同様の効果を持たせられますけども。
引用返信 編集キー/
■68646 / inTopicNo.3)  Re[2]: MouseDownイベントの書き換え
□投稿者/ wankuma_fun (10回)-(2013/11/03(Sun) 06:44:06)
なるほど、イベントを書き換えるにはまた別のクラスを作る必要があるのですね、
>「どのインスタンスの」Clickイベントから「どのメソッドを」削除したいと言うことでしょうか?

上記の拡張したPictureBoxクラスのインスタンスのメソッドです。
+-を使えばイベントを削除できると思ったのですが、やっぱり違うのでしょうか。
引用返信 編集キー/
■68648 / inTopicNo.4)  Re[1]: MouseDownイベントの書き換え
□投稿者/ Azulean (231回)-(2013/11/03(Sun) 09:13:08)
2013/11/03(Sun) 09:15:09 編集(投稿者)

No68643 (wankuma_fun さん) に返信
> このようなOnMouseDownイベントをもつ拡PictureBoxクラスがあるのですが、
> +=と-=を使って別のMouseDownイベントに書き換えたいです。

もう少し、具体的なコードを用いて説明してください。
あなたがやりたいことをきちんと伝えられていないので、助言を得られない状況にあります。


何となく思い浮かぶこととしては、特定の MouseDown の時は上位にイベントを伝えずにドラッグモードにしたいということなのかな?
base.OnMouseDown を呼ばなければイベントは起きませんが、その代わりにイベントを呼ぶ以外の処理も動かない可能性があるので注意してください。

イベントハンドラの登録自体を削除(登録解除?)するには、登録した button1_Click といったデリゲートを知っているクラス以外は、リフレクションを使わないと無理です。
(どこか別の場所で書かれていて、その場所を知らない状況でも消したいと言うことであればリフレクション)
引用返信 編集キー/
■68650 / inTopicNo.5)  Re[2]: MouseDownイベントの書き換え
□投稿者/ wankuma_fun (12回)-(2013/11/03(Sun) 11:09:43)
>もう少し、具体的なコードを用いて説明してください。
>あなたがやりたいことをきちんと伝えられていないので、助言を得られない状況にあります。
うまく説明できなくて申し訳ございません。ちょうど下記のことをお聞きしたかったのです。ありがとうございます。

>イベントハンドラの登録自体を削除(登録解除?)するには、登録した button1_Click といったデリゲートを知っているクラス以外は、リフレクションを使わないと無理です。
>(どこか別の場所で書かれていて、その場所を知らない状況でも消したいと言うことであればリフレクション)

やはりそうでしたか。登録イベントの分離、もしくは派生クラスで検討することにします。
ご回答ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -