トップ回答者
グリッドのProcessDialogKey

質問
-
環境:Visual Studio 2010
グリッドのProcessDialogKeyをオーバーライドし、Enterを押したとき次の編集可能セル(ReadOnly = False)に移動する処理を行っています。
しかし、セルの編集中状態の時にTabキーを押した場合のみ何のイベントも発生せず、ただ隣のセルに移動してしまいます。
DataGridViewではonKeyDownも実装していますが編集中状態からのTabキーの場合はこれを補足しません。
ProcessDialogKeyでTabキーを補足できないのはなぜでしょうか?以下整理します。
・セル選択&F2キー → 入力 → Tabキー (隣のセルになってしまい、イベント補足もできない)
・セル選択&F2キー → 入力 → Enterキー (ProcessDialogKeyが発生し、独自の編集可能セル移動処理を行う)
回答
すべての返信
-
ありがとうございます。解決することができました。
なぜか以下のような捕捉の仕方でした。
ProcessDialogKey → Enterキーほか
ProcessDataGridViewKey → Tabキーほか
"挙動を変えている"といった部分は正直技術的にわかりませんが大変助かりました。
本来ここで回答としてマークすべきですが、まだ閲覧されていましたらもう一つ教えて頂けないでしょうか。
Tabキーを押すとWindowsのエラー音(ピンッと言う感じ?)がなります。これを防止する策は何かないでしょうか。
ネット検索でもあまり記事が出てこないためもしご存知でしたら教えてください。
大元の質問は後付質問の解決の如何に関わらず近日中に「回答としてマーク」させて頂きます。
お手数ですが、よろしくお願いします。
- 編集済み abc_123_ 2018年2月23日 6:25
-
-
回答ありがとうございます。結果的には解決できませんでした。
現在DateGridの入力イベントとして
「KeyDown」「ProcessDialogKey」「ProcessDataGridViewKey」「OnCurrentCellChanged」
を定義していますがそれぞれe.Handled = Trueを挿入しましたがBeep音が鳴りました。
またリンク先の「KeyDown」→「KeyPress」でe.Handled = Trueを挿入するように対応していましたが、こちらも同じくBeep音が鳴りました。
業務ロジック上、キー入力の様々なタイミングで処理をしているためイベントが多いですが、これらの関連性がよくないのでしょうか。。。
-
以下は、Windows 全体に関わる影響範囲となる対策ですが、いかがでしょうか?
おそらくNGだと思うのと(アプリ内だけの影響にされたいと思われるのではないかと)、以下の理由から、新しく質問を立てられた方がいいのではないかと思いました。
・議題内容が変わった(キー遷移の話からビープ音の話に変わった)
・現象の内容が簡単ではないレベルと判断した(解決できない私が悪いのですが)
・解決済みのスレッド内なので有識者様が見られていない?
ビープ音を無効にする
http://prg.seesaa.net/article/84014999.html?reload=2008-10-17T13:08:54
[Windows] Beep音を止める方法。
http://heppoco-programer-life.dreamlog.jp/archives/1214591.html