次のコントロールにジャンプする代わりに、TABキーを受け入れる(そしてそれに応じてTAB、ASCII 0x09、\ tをテキストボックスに配置する)TextBoxが必要です。TextBoxにはプロパティAcceptsTabがあり、これをtrueに設定しましたが、これでは目的の結果が得られません。AcceptsTabプロパティのみが機能し、Multilineもtrueに設定されていることがわかります。ただし、改行を受け入れない1行のTextBoxが必要です。
pbean
質問する
3002 次
2 に答える
4
これがあなたがすることです。TextBox を継承する独自のクラスを作成します。コンストラクターで、multiline を true に設定し、AcceptsTab を true に設定します。次に、WndProc をオーバーライドして、次のコードを使用します。
protected override void WndProc(ref Message m)
{
if (m.Msg == (int)0x102 && m.WParam.ToInt32() == 13)
{
return;
}
base.WndProc(ref m);
}
これにより、Enter キーが受け入れられなくなり、新しい行が作成されなくなります。ハッキー?はい、でもうまくいきます..
編集: このコードの機能について説明します。すべてのウィンドウ フォームとコントロールは、ペイント、キー ダウンなどのような何かが発生すると、ウィンドウ メッセージを受け取ります。キーが押されました。それがメッセージで、WParam == 13 の場合は、Enter キーが押されたことを意味します。この場合は何もせずに戻ります。それ以外の場合は、期待どおりに再開します。理にかなっていますか?
于 2008-12-17T15:16:09.963 に答える
0
複数行をtrueに選択し、行サイズを1に設定します。目的の結果が得られます。
于 2008-12-17T13:20:50.973 に答える