winforms .net 3.5 ウルトラウィンググリッド 9.2
Ultrawingrid.Ultragrid の私のサブクラスでは:
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Windows.Forms.Keys.Tab andalso e.control = True then
SetFocusToNextControl(True)
End if
Mybase.OnKeyDown(e)
End Sub
これはうまくいきます。しかし、グリッドが TabControl タブページにドロップされると、ctrl-tab は上記のサブとは大きく異なって見えます。e.keycode は controlkey {17} と見なされます
デフォルトでは cntrl-Tab がタブページ間を移動することを認識しています。この動作をオーバーライドする必要があります。私の考えでは、フォームと同じようにキーコンボを渡す tabControl のサブクラスがおそらく必要ですが、それを達成する方法については無知であることを告白します。tabcontrol サブクラスの onkeydown をオーバーライドしようとしましたが、ctrl-tab コンボが押された場合に onkeydown への return と not と base 呼び出しを発行しましたが、e.keycode が controlkey としても表示されるようでした。
FWIW ctrl-E などの別の組み合わせを試してみたところ、フォーカスがグリッドから消えてしまいましたが、検出できる場所には行かず、ほぼ同じ結果が得られました。サブはまだ e.control を controlkey として認識していました。
奇妙なことに、ctrl-X、ctrl-A などはすべてグリッドで機能し、行を削除するためにサブクラスに入れた ctrl-Delete コンボは正常に機能します。
繰り返しますが、フォーム上に直接グリッドを配置すると、すべて機能します。
私は間違いなくこれについて頭を悩ませています。ガイダンスは大歓迎です。vb または c# で問題ありません。
ティア