@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

UserControlにAddしたコントロールのイベントの取得

1
投稿者投稿内容
じゃんき
会議室デビュー日: 2007/03/28
投稿数: 10
投稿日時: 2007-08-13 18:47
VS2005、C#でWindowsアプリを開発しています。

UserControlに動的にグリッドコントロールをAddしています。
そのできあがったUserControlを最終的にForm側でAddしているのですが、
グリッドのダブルクリックイベントをForm側で処理したいのですが、
UserControl側で処理が実行されて終わってしまう状態になっています。

UserControl側でグリッドに対してダブルクリックイベントを
追加してしまっているのが原因なのですが、
今の状態でもForm側でグリッドのイベントを拾うことは可能でしょうか?

よろしくお願いします。

ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-08-13 20:04
グリッドとユーザーコントロールの関係と同じ理屈でユーザーコントロールでイベントを起こせばフォームで取得できるよね。
今ユーザーコントロールでイベントを処理しているならそこでイベントをさらにフォームに伝えるべくユーザーコントロールで起こしてやってちょ。
じゃんき
会議室デビュー日: 2007/03/28
投稿数: 10
投稿日時: 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側で処理を拾うことができました。
けど、なんか遠まわしなことをしてしまっているような気がするのですが・・・。

ありがとうございました。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-08-14 23:11
そうか?
フォームに配置されたユーザーコントロールってのはユーザーコントロール本体のみにアクセスできるのが普通であってそうでなきゃ逆に困るんだが。
だから伝えたいものだけを上位に伝える。

キー関係のイベントだってそうでしょ。
FormのKeyPreviewをtrueにした時なんかは少し特殊だけどTextBoxのキーイベントとFormのキーイベントの伝播がうまくなされてる。
1

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

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