フォームのAcceptButtonとして設定されているボタンのあるフォームがあります。フォームには他にもいくつかのコントロールがあります。他のコントロールでEnterキーを押すと、フォームの承認ボタンが原因でフォームが閉じます。CancelButtonについても同じことが言えます。これをどのように処理しますか。フォームとコントロールのkeypressキーダウンイベントにフックしてみました。動作しません。これを回避する方法はありますか?
トンありがとう、ダッテ
フォームのAcceptButtonとして設定されているボタンのあるフォームがあります。フォームには他にもいくつかのコントロールがあります。他のコントロールでEnterキーを押すと、フォームの承認ボタンが原因でフォームが閉じます。CancelButtonについても同じことが言えます。これをどのように処理しますか。フォームとコントロールのkeypressキーダウンイベントにフックしてみました。動作しません。これを回避する方法はありますか?
トンありがとう、ダッテ
これがAcceptButton
プロパティの仕組みです。を押すたびに自動的にクリックされるボタンを指定します<Enter>
。
この動作を望まない場合は、として設定しないでくださいAcceptButton
。それをする理由は他にありません。
フォームがどのように機能するかについては正確にはわかりませんが、次のようなことを実行して、物事をもう少し制御することができます。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
// do something
}
if (keyData == Keys.Escape)
{
// do something else
}
return base.ProcessCmdKey(ref msg, keyData);
}
フォームからAcceptButtonを削除し、KeyDownイベントを処理するフォームにKeyPreviewプロパティを設定できます。そこで、Enterキーを確認し、それに応じてアクションを実行できます。
これはフォームの特徴の1つです。
ユーザーがEnterをクリックしたときに目的のコードを実行したい場合は、ボタンにフォーカスがありません...
フォームのAcceptButtonプロパティを設定して、ボタンにフォーカスがない場合でも、ユーザーがENTERを押してボタンをクリックできるようにします。
よろしく。
VB>netでこれを試してください
If CType(Me.ActiveControl, Button).Name = Button1.Name Then
End If