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

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

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

Re[2]: PropertyGridでのイベント取得方法


(過去ログ 110 を表示中)

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

■65142 / inTopicNo.1)  PropertyGridでのイベント取得方法
  
□投稿者/ howling (182回)-(2013/02/07(Thu) 16:23:09)

分類:[.NET 全般] 

いつもお世話になっております。

C# / VS2010 / Windows7にて作業を行っております。

おそらく既知の問題だと思いますので、もし何か良いスレッドなどがあれば教えて頂きたいのですが…
念のため、質問させてください。

Formに1つPropertyGridを割り当て、ここの上でマウスのダブルクリックなどを行うと、
このイベントの取得がうまくできない問題があります。

これの解決方法として、何かうまい方法がありますでしょうか?
上にPanelを貼り付けて、そいつのイベント処理を回す…とか変なことが必要になりますか?

もしご存知の方がいらっしゃいましたら、お願い致します。
引用返信 編集キー/
■65159 / inTopicNo.2)  Re[1]: PropertyGridでのイベント取得方法
□投稿者/ Hongliang (35回)-(2013/02/08(Fri) 10:53:42)
PropertyGridで何か機能が見つからなくて困っているなら、まず本当にPropertyGridを使うべきかどうかってところから考えてみてください。
PropertyGridは開発者向けコントロールという節があります。

さて、PropertyGridはコンテナであり、一種のユーザコントロールです。Controlsを確認すれば子コントロールがいくつか存在しているのが見えます(PropertyGrid.Controlsはインテリセンスに表示されませんけど)。
コントロールのマウスイベントは基本的に親に通知されないので、当然PropertyGrid上の子コントロールのダブルクリックもPropertyGrid.DoubleClick等は発生しません。
// プロパティのリスト部とその下のプロパティの解説スペースの間のスプリッタ部分はPropertyGridが直接実装してるらしく、DoubleClickが発生したりします。
とりあえずぱっと思いつく方法としては、IMessageFilterを使って、WM_LBUTTONDBLCLKのときに祖先コントロールに該当のPropertyGridがあったときにイベントを発生させるとか。
Controlsで引っかかる子コントロールに直接イベントハンドラを関連づけるとか。
引用返信 編集キー/
■65164 / inTopicNo.3)  Re[2]: PropertyGridでのイベント取得方法
□投稿者/ howling (183回)-(2013/02/08(Fri) 13:02:29)
No65159 (Hongliang さん) に返信
お返事ありがとうございます。
PropertyGridを本当に使うのか?という部分については、
特に見た目において必須といった状態になってしまっています。
どちらかというと、内部的な実装よりも、要求がそうなってしまっている形です。
もちろん、自分自身でそれに似通ったコントロールを作れればより良いのですが、
そこまでの時間は今無さそうです。

なるほど…。
そういえば既に子コントロールがあるかどうか、などはさっぱり調べていませんでした。
内部的にきっと何かやっているんだろうな、程度でしたので、頂いたキーワードを元に少し調べてみたいと思います。
有用な情報ありがとうございました。

一旦これで解決済みとしておきます。
また質問があれば別スレで書きますので、
その時はまた宜しくお願い致します。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -