私は、ほとんどのデータ収集フォームが基本フォームから派生しているシステムで作業しています。各フォームにはAcceptButtonが設定されているため、Enterキーを押すと、AcceptButtonのイベントが発生します。Enterキーを押した後、保存してもよいかどうかを尋ねる警告をユーザーに表示できるようにしたいと思います。'yes'を選択すると、AcceptButtonイベントが発生し、'no'を選択すると、何も起こりません。これは基本クラスから実行できますか?Enterキーが押された場合、ProcessCmdKeyメソッドの基本クラスでAcceptButtonを何にも設定しようとしましたが、再度リセットする方法がわかりません。
質問する
419 次
1 に答える
1
メソッドをオーバーライドすることで正しい方向に進んでいると思いますがProcessCmdKey
、なぜAcceptButtonを何にも設定しないのですか?このような実装で十分です
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
If (keyData = Keys.Enter) Then
If (MessageBox.Show("Do you want to save?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No) Then
Return True 'Eat the key press.
End If
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
これにより、Enterキーが押されたときにユーザーにプロンプトが表示され、ユーザーが「いいえ」と応答した場合はTrue
、キーが処理されてそれ以上の処理が行われないことを示すが返されます。これにより、Button.Click
イベントが発生しなくなります。
于 2013-01-16T23:44:16.810 に答える