2010-04-05 2 views
0

У меня есть пользовательское расширение WinForms DateTimePicker, и он отлично работает, за исключением того факта, что он дает этот звуковой сигнал, когда я нажимаю клавишу escape или Enter.Как избежать звукового сигнала DateTimePicker

Я попытался перекрывая OnKeyPress как описанный here, но таким образом он блокирует все из нажатых клавиш и, таким образом, делает невозможным ввести дату или время с помощью клавиатуры. Должен ли я переопределить WndProc или есть другой способ решить эту проблему?

Кстати, кто-нибудь знает, почему звуковой сигнал был бы желательным в первую очередь?

ответ

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; 
    } 
    } 
+0

Это сделало трюк, спасибо! – Leon

1

Если вы переопределите onkeypress, вам необходимо пройти и вызвать базу для ключей, которые вы хотите принять, и не вызывать базу для входа и выхода, если вы хотите, чтобы те игнорировались. Может быть, вы должны опубликовать свой код, чтобы узнать, есть ли опечатка в логике.

Звуковой сигнал обычно указывает пользователю, что нажатие клавиши ничего не делало.

+0

Я вижу, спасибо за реакцию. – Leon