- PR -

Buttonにショットカットキーの挙動について

1
投稿者投稿内容
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2004-08-20 20:13
いつもお世話になっております。

Formを1枚作成し、その上に張る付けるパネルを張り替えることにより
画面の遷移を行なっております。
パネルにはButton、TextBox等のコンポーネントが張ってあります。
で、パネルに貼り付けたButtonにショットカットキーを割り付けた場合の
挙動がおかしいのです。

フォーム上には常に1枚のパネルしか存在しておりません。
(但し、前に表示していた画面はメモリ上にスタックした状態です。)
しかし、キーボードでショートカットキーを使用した場合に前に表示していた
パネルのイベントが先に実行されてしまいます。
本来は、現在実行しているパネルのイベントが実行されるはずだと思うのですが・・・

ショットカットキーはFormコンポーネントが拾って子供のコンポーネントに
処理を委譲しているという認識なのですが、そもそもその考えが間違っているのでしょうか?

どなたか、このような現象に詳しい方が居られましたらご教授願えませんでしょうか。

下記の環境でC/Sのシステムを作成しております。
 OS:win2000
 framework:.NET framework 1.0
 VS.NET:2002
 system.windows.form以下のコンポーネントをカスタマイズして開発をしております。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-08-20 21:02
VS.NET:2002 とあるんですが、言語が書かれていません。
言語は何ですか?

引用:

Hodgkinさんの書き込み (2004-08-20 20:13) より:
フォーム上には常に1枚のパネルしか存在しておりません。
(但し、前に表示していた画面はメモリ上にスタックした状態です。)
しかし、キーボードでショートカットキーを使用した場合に前に表示していた
パネルのイベントが先に実行されてしまいます。
本来は、現在実行しているパネルのイベントが実行されるはずだと思うのですが・・・



「前に表示していたパネルのイベントが先に」といことは、
その後に現在のパネルのボタンのイベントが発生しているのですか?

イベントの関連付けを行っている部分のソースコードに問題があるだけのように
思えますが、その辺はどんなソースなんでしょう?

引用:

ショットカットキーはFormコンポーネントが拾って子供のコンポーネントに
処理を委譲しているという認識なのですが、そもそもその考えが間違っているのでしょうか?



後、念のための確認ですが、ショートカットキーとおっしゃっているのは、
アクセスキーのことですよね?
(例えば、ボタンが「終了(X)」となっているときにAlt+Xと押すことで
終了ボタンが押されるもののことです。)
#Ctrl+何かのキー などで独自に処理されている場合、
#根本的に話が違ってくるので念のための確認です。

Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2004-08-23 09:58
引用:

よねKENさんの書き込み (2004-08-20 21:02) より:
VS.NET:2002 とあるんですが、言語が書かれていません。
言語は何ですか?



申し訳ありません。
言語はVB.NETです。

引用:

「前に表示していたパネルのイベントが先に」といことは、
その後に現在のパネルのボタンのイベントが発生しているのですか?

イベントの関連付けを行っている部分のソースコードに問題があるだけのように
思えますが、その辺はどんなソースなんでしょう?



特に特別なことは何も記述していません。

'終了ボタン押下時処理
Private Sub NormalButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NormalButton1.Click
 '前に表示していた画面に戻る
 getUIManager().showReturnPanel()
End Sub

もう一度、挙動を確認してみたところ下記のことがわかりました。
 ・前に表示していたパネルのイベントが呼ばれた場合、現在表示しているパネルの
  イベントは実行されない。
 ・アクションキーではなく、マウスでボタンを押下した場合は正しくイベントが
  実行される。
 ・一度マウスでボタンを押下した後は、アクションキーでも現在のパネルのイベントが
  実行される。

3点目を見ると、よねKENさんの言われた通り「イベントの関連付け」の辺りが
おかしいのではないかなと思ってきました。
もう一度色々と試してみたいと思います。

引用:

後、念のための確認ですが、ショートカットキーとおっしゃっているのは、
アクセスキーのことですよね?
(例えば、ボタンが「終了(X)」となっているときにAlt+Xと押すことで
終了ボタンが押されるもののことです。)
#Ctrl+何かのキー などで独自に処理されている場合、
#根本的に話が違ってくるので念のための確認です。



その通りです。アクションキーのことです。
ただ、Ctrl+何といった独自の処理は実装してません。
1

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