Как отключить отображение клавиши F4 в элементах ComboBox? - PullRequest
3 голосов
/ 05 мая 2010

Возможно, вы этого не знаете, но при нажатии клавиши F4 на ComboBox появляется раскрывающийся список элементов. Я считаю, что это поведение по умолчанию в Windows.

Кто-нибудь знает, как переопределить это поведение в WPF (C #)?

Я знаю, что переопределение поведения по умолчанию обычно считается плохой практикой, однако в этом случае у меня есть защищенное устройство с XP Embedded. Он имеет несколько видных функциональных клавиш ( F1 - F6 ), которые должны вызывать различные события. Это работает нормально, однако, когда фокусировка на ComboBox, события не запускаются, когда ComboBox падает.

Я попытался перехватить событие KeyDown как в форме, так и в ComboBox и прослушать клавишу F4 , однако это не так далеко, поскольку нажатие клавиши должно быть обработано на более низком уровне.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 05 мая 2010

Я не уверен в XP Embedded, но на обычной старой XP это работает. Используйте PreviewKeyDown и установите для e.Handled значение true:

public MyWindowOrControl()
{
    InitializeComponent();
    cboTest.PreviewKeyDown += new KeyEventHandler(cboTest_PreviewKeyDown);
}

void cboTest_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.F4)
        e.Handled = true;
}
0 голосов
/ 05 мая 2010

Вы можете создать свой собственный класс ComboBox и просто наследовать от старого ... надеюсь, вы сможете переопределить методы keydown / up.

...