2016-06-13 3 views
3

Я пытаюсь открыть F4 в другое окно, но у меня есть некоторые из моих окон, поэтому, когда они открыты, для вставки установлено значение по умолчанию TextBox или ComboBox, так как основное внимание уделяется тому, что он не распознает, что я нажал f4, но по какой-то причине он распознает другие клавиши F. Он также не распознает ключ вставки.C# - не распознавание Keydown, когда фокус находится на TextBox или ComboBox

Мне интересно, как я мог это исправить

private void wCarrierContractSurcharge_KeyDown(object sender, KeyEventArgs e) 
{ 
    CommonCode.ApplyStandardKeyShortcuts(this, e); 
} 

ответ

4

KeyDown является событием восходящей цепочки, что означает, что обжигают в текущем UIElement первого и «пузырей» до родительских элементов, если она не обрабатывается. В этом случае многие элементы пользовательского интерфейса обрабатывают F4 для открытия выпадающих списков или выполнения различных других задач. Поскольку ComboBox и TextBox обрабатывают событие сами, он не становится пузырьком до окна, поэтому обработчик KeyDown окна не будет запускаться.

Если вы хотите, чтобы окно переопределяло его дочерние элементы, вместо этого вы должны использовать PreviewKeyDown. Это событие туннелирования, то есть обработчик родительского элемента управления запускается первым и туннели до дочернего элемента управления, если он не обрабатывается.

См. this answer для получения дополнительной информации о событиях туннелирования и барботирования.

+0

спасибо, что это сработало отлично! – RickS

+0

@RickS отметьте это как ответ (значок галочки ниже, где вы проголосуете) и дайте чуваку кредит, а также пусть другие читатели знают, что он отсортирован. :) –

Смежные вопросы