この単純な問題は、.NETでWinFormsを使用して何度も繰り返されます。私はテキストボックスを持っており、Enterキーを押すたびにlostfocusを上げたい、次のコントロールをFocusedにするなど、EnterキーをTabキーと同じように扱いたいと思います。この問題を解決するには、KeyDownをキャプチャしてEnterキーを押してフォーカスを移動することができますが、私が探しているのはベストプラクティスです.TextboxコントロールがTabキーを内部的に検出する場所と、私はちょうど "||キー== Keys.Enter"を追加することができますか?これにより、Keydownの発生を停止し、代わりにフォーカスを次のコントロールに移動し、他の適切なメッセージを生成します。.NET Enterキーをテキストボックスのタブとして解釈する
.NET TextBox - Handling the Enter Keyの前にこの同様の質問を確認しましたが、実際に達成したいことではありません。私が本当にやりたいことは、可能な限り早く、テキストボックスコントロールでTABとしてENTERを解釈するか、タブに入力してテキストボックスに変更させて変更することです。
編集:ここではこれがないかもしれ私が探しているものの線に沿って何かだが、私はこのようなWindowsのメッセージを変更する「安全」わからないんだけど...
class FancyTextBox : TextBox
{
public bool TreatEnterAsTab { get; set; }
const int WM_KEYDOWN = 0x100;
const int KEY_TAB= 9;
const int KEY_ENTER = 13;
public override bool PreProcessMessage(ref Message msg)
{
if (TreatEnterAsTab && msg.Msg == WM_KEYDOWN && msg.WParam.ToInt32() == KEY_ENTER)
msg.WParam = new IntPtr(KEY_TAB);
return base.PreProcessMessage(ref msg);
}
}
クリーンアップをありがとう。私はsystem.windows.forms.messageをこのように修正することは受け入れられるとは確信していませんでしたが、TextBoxをサブクラス化することを除いて、最もきれいに見えます。 – deepee1