0

私は WinForms DateTimePicker のカスタム拡張機能を持っていますが、エスケープ キーまたはエンター キーを押すたびにこの厄介なビープ音が鳴るという事実を除いて、正常に動作します。

hereのように OnKeyPress をオーバーライドしようとしましたが、この方法では、押されたすべてのキーがブロックされるため、キーボードを使用して日付や時刻を入力できなくなります。WndProc をオーバーライドする必要がありますか、またはこの問題を解決する別の方法はありますか?

ところで、そもそもビープ音が望ましい理由を知っている人はいますか?

4

2 に答える 2

1

適切なKeyDownイベントハンドラーで抑制してください。

  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
      dateTimePicker1.KeyDown += squelchBeep;
    }
    private void squelchBeep(object sender, KeyEventArgs e) {
      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Escape) e.SuppressKeyPress = true;
    }
  }
于 2010-04-05T20:23:25.577 に答える
1

onkeypress をオーバーライドする場合は、受け入れたいキーのベースをパススルーして呼び出す必要があります。それらを無視する場合は、Enter とエスケープのベースを呼び出さないでください。コードを投稿して、ロジックにタイプミスがあるかどうかを確認する必要があるかもしれません。

通常、ビープ音は、キーを押しても何も起こらなかったことをユーザーに示します。

于 2010-04-05T19:43:18.483 に答える