4

複数行として設定されたフォームに単純な検索フィールドがあり (これがテキスト ボックスの高さを変更する唯一の方法であると理解しています)、フラグ AcceptsReturn が false に設定されています。

ただし、そのコントロール内でEnterキーを押すと、デフォルトのボタンがアクティブになる代わりに、改行文字が挿入されます。

ここで、KeyPress イベントを使用して、検索ボタンのクリック機能をアクティブにするために Enter キーが押されたかどうかを確認して、この戻り動作を上書きすることを試みましたが、そうではありませんでした。これで、検索を実行し、改行文字を挿入するだけです。

私は Visual Studio 2010 を実行しています (この問題は、変換する前の 2008 年にも存在していたようですが)、C# .NET 2.0 を実行しています。解決策はありますか?

4

2 に答える 2

6

AcceptButtonプロパティについて言及している回答がすでに投稿されているようですが、なぜそれが必要なのかをより明確に述べると思います。quoth MSDN、AcceptsReturnで、「フォームのデフォルトボタンがない場合、ENTERキーは常にこのプロパティの値に関係なく、コントロールに新しいテキスト行を作成します。」(ダミーフォームで試してみました。「デフォルトボタン」とは、実際にはフォームのAcceptButtonプロパティを意味します。1つのセットでは、AcceptsReturnの値に違いがあります。1つがないと、効果はありませんでした。)

KeyPressに関しては、この場合は明らかに最善の方法ではありませんが、過去にそのようなトリックを使用する必要がありました。イベントを自分で処理した場合、e.Handledをtrueに設定したことを覚えていますか?

于 2012-05-08T17:35:51.427 に答える
3

フォームにはAcceptButtonというプロパティがあります。それは、デフォルトのボタンと呼んでいるボタンを指していますか?

ちょっとしたテストを書いただけで、うまくいくようです。

于 2012-05-08T17:32:01.877 に答える