- - PR -
UserControlにAddしたコントロールのイベントの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-08-13 18:47
VS2005、C#でWindowsアプリを開発しています。
UserControlに動的にグリッドコントロールをAddしています。 そのできあがったUserControlを最終的にForm側でAddしているのですが、 グリッドのダブルクリックイベントをForm側で処理したいのですが、 UserControl側で処理が実行されて終わってしまう状態になっています。 UserControl側でグリッドに対してダブルクリックイベントを 追加してしまっているのが原因なのですが、 今の状態でもForm側でグリッドのイベントを拾うことは可能でしょうか? よろしくお願いします。 |
|
投稿日時: 2007-08-13 20:04
グリッドとユーザーコントロールの関係と同じ理屈でユーザーコントロールでイベントを起こせばフォームで取得できるよね。
今ユーザーコントロールでイベントを処理しているならそこでイベントをさらにフォームに伝えるべくユーザーコントロールで起こしてやってちょ。 |
|
投稿日時: 2007-08-14 15:02
UserControl側の処理
public event System.EventHandler ehTest;//イベントハンドラー変数作成 private void Grid_DoublClick(object sender, KeyEventArgs e) { // グリッドにさせたい処理を書く this.ehTest(sender, e); // そのあとにイベントを発生させる } Form側の処理 this.usControl.ehTest += new EventHandler(usControl_ehTest); private void usControl_ehTest(object sender, EventArgs e) { // Form側でさせたい処理を書く } で、なんとかForm側で処理を拾うことができました。 けど、なんか遠まわしなことをしてしまっているような気がするのですが・・・。 ありがとうございました。 |
|
投稿日時: 2007-08-14 23:11
そうか?
フォームに配置されたユーザーコントロールってのはユーザーコントロール本体のみにアクセスできるのが普通であってそうでなきゃ逆に困るんだが。 だから伝えたいものだけを上位に伝える。 キー関係のイベントだってそうでしょ。 FormのKeyPreviewをtrueにした時なんかは少し特殊だけどTextBoxのキーイベントとFormのキーイベントの伝播がうまくなされてる。 |
1