0

私は、ほとんどのデータ収集フォームが基本フォームから派生しているシステムで作業しています。各フォームにはAcceptButtonが設定されているため、Enterキーを押すと、AcceptButtonのイベントが発生します。Enterキーを押した後、保存してもよいかどうかを尋ねる警告をユーザーに表示できるようにしたいと思います。'yes'を選択すると、AcceptButtonイベントが発生し、'no'を選択すると、何も起こりません。これは基本クラスから実行できますか?Enterキーが押された場合、ProcessCmdKeyメソッドの基本クラスでAcceptButtonを何にも設定しようとしましたが、再度リセットする方法がわかりません。

4

1 に答える 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 に答える