- PR -

フォームとユーザーコントロールのイベント

1
投稿者投稿内容
梅吉
会議室デビュー日: 2003/08/19
投稿数: 16
投稿日時: 2004-03-09 18:33
はじめまして、よろしくお願いします。

早速質問なのですが、

古臭い仕様でEnterキーでタブ移動させているプログラムを
作っています。

Form側でEnterキーが押されたことを検知して
Tabキーに置き換えているのですが、
Form上に貼り付けたUserControlにKeyDownイベントを
持たせるとそのUserControl上でEnterを押しても
Form側のKeyDownイベントが起きません。
(Form側のKeyPreviewはTrueに設定しています。)

解決策としてユーザーコントロールのKeyDownイベントを
Form側で受け取る事も出来ると思うのですが、
出来るなら、ユーザーコントロール側のKeyDownイベントの
後に自動的にForm側のKeyDownイベントが走ってくれれば
嬉しいのですが...

よろしくお願いします。

[環境]
Win2k C# Windowsアプリ
弟子
会議室デビュー日: 2004/02/03
投稿数: 11
投稿日時: 2004-03-09 18:56
多分もう結論に達していると思いますが(^^;

ユーザコントロールのKeyDownイベントをForm側のメソッドに
関連付ければ良いと思います。

UserControl.KeyDown += new EventHandler(Form側のKeyDown通知を受け取るメソッド)
みたいな感じでしたっけ(ぜんぜん未確認)

見当外れだったらすみません(汗
梅吉
会議室デビュー日: 2003/08/19
投稿数: 16
投稿日時: 2004-03-09 19:02
弟子さん。
ご返信ありがとうございます。

説明不足だったかもしれませんが、
UserControlは1つではなく、複数個貼り付けるので
Form側にコーディングすることはなるべく避けたいのです。

コーディングを減らしバグの発生を避けるべく
「UserControlはFormに貼り付けたら完了」
にしたいのです。

やっぱり、無理なのでしょうか..。
弟子
会議室デビュー日: 2004/02/03
投稿数: 11
投稿日時: 2004-03-09 19:10
UserControlとFormの関係をBridgeパターン(だったっけ?自信なし)で設計すると、
親クラスだけ書いておける・・・みたいなことできませんか。

Formの親クラス ←通知 UserControlの親クラス
↓               ↑(ダミー)
Formの子クラス:実装   UserControlの子クラス

みたく。
Webでも使えたので、おそらくこれでいけるかと。
梅吉
会議室デビュー日: 2003/08/19
投稿数: 16
投稿日時: 2004-03-10 09:00
Bridgeパターンですか?
デザインパターンのひとつでしょうか?
どうもそこらへんに疎いもので..。

これも勉強だと思い、ちょっと調べてやってみます。

弟子さん。
貴重な知識をありがとうございました。
1

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