0


0

アプリケーションの特定の領域に表示されるコントロール内にデータグリッドビューがあります。

F5が押されたときにこのアクティビティグリッドを更新してください。

アクティビティグリッドビューがキーアップイベントを処理することによって現在画面上でフォーカスされている要素である場合、これを実行するのは十分に簡単ですが、これは明らかに他の要素(例えば、 メニューバー)が最後にクリックされたものです。

この場合も同様にキーの押下を追跡する方法はありますか? データグリッドビュー/コントロールの外側のコードにアクセスできません。

これに対する答えは明らかに否定的かもしれませんが、私は私がこの作品を作る際に明白な何かを見逃していなかったことを確かめたかったです。

4 Answer


0


いいえ

その時点でフォーカスされている可能性のある他のコントロールにアクセスできない場合は、それらからキーアップメッセージをコントロールに渡す方法はありません。


0


コントロールが配置されているフォーム上で、グローバルキーボードイベント処理を実行できます。

これをフォームに追加すると、コントロールに送信される前にグローバルキーイベントを取得できます。

プロテクトオーバーライドbool ProcessCmdKey(refメッセージmsg、keys keyData){switch(keyData){case Keys.F5:// Refeshイベントをグリッドに送信するはtrueを返します。 //キーを処理済みとしてマーク

//ここに余分なコマンドキーを追加します}

base.ProcessCmdKey(ref msg、keyData)を返します。 //基本関数に再送信}


0


フォーム自体でイベントをキャプチャしてからデータグリッドのイベントハンドラを呼び出そうとしましたか。 キーボードイベントの通知を受けるには、KeyPreviewをtrueに設定する必要があります。


0


これを処理する最良の方法は、すべてのキー入力を処理するためのメインアプリケーションフォームを取得することです。 これを行うには、メインのFormプロパティ "KeyPreview"をTrueに設定します。

その後、メインフォームですべてのKeyUpイベントを処理します。 KeyPreviewの詳細については、こちらをご覧ください。http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx