KeyPreview を true に設定したフォーム myForm があります。
アイデアは、どのテキストボックス (または他のコントロール) がフォーカスされていても、CTRL-Enter をキャプチャしてフォームの送信ボタンを起動したいということです。
だから私はこの方法を設定しました:
private void myForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Enter)
{
btnCommit_Click(sender, new EventArgs());
}
}
それはまさにそれが言うことをします。問題は、エンター キー ストロークがフォーカスされたテキスト ボックスでも発生するため、テキスト ボックスの単語の途中またはカーソルの位置に改行が入ることです。MSDNのドキュメントによると:
このプロパティが true に設定されている場合、フォームはすべての KeyPress、KeyDown、および KeyUp イベントを受け取ります。フォームのイベント ハンドラーがキーストロークの処理を完了すると、キーストロークはフォーカスのあるコントロールに割り当てられます。
これは残念ながら真実ではありません。コードをステップ実行して、myForm_KeyUp コードが実行される前にテキスト ボックスに新しい改行が実際に表示されることを確認しました。
私は両方を追加しようとしました
e.Handled = true;
と
e.SuppressKeyPress = true;
テキストボックスにはすでに改行が表示されているため、効果はありません。
何か案は?何か不足していますか?