Могу ли я обработать событие key up, даже если вид сетки не сфокусирован? - PullRequest
0 голосов
/ 06 февраля 2009

У меня есть Data Grid View внутри элемента управления, который отображается в определенной области приложения.

Я бы хотел, чтобы эта сетка действий обновлялась при нажатии клавиши F5.

Это достаточно легко сделать, когда представление «Сетка действий» является текущим фокусируемым элементом на экране, обрабатывая событие Key Up, но это, очевидно, не работает, когда другой элемент (например, строка меню) был последним, был нажат.

Есть ли способ отслеживать нажатия клавиш в этом случае? У меня нет доступа к коду вне моего вида / элемента управления сеткой данных.

Ответ на этот вопрос может быть однозначным: нет, но я хотел убедиться, что не упустил что-то очевидное при создании этой работы.

Ответы [ 4 ]

0 голосов
/ 06 февраля 2009

Лучший способ справиться с этим - получить основную форму приложения для обработки всех нажатий клавиш. Для этого установите для основного свойства формы «KeyPreview» значение True.

Затем обработайте все ваши события KeyUp в главной форме. Больше информации о KeyPreview здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

0 голосов
/ 06 февраля 2009

Вы можете выполнить глобальную обработку событий клавиатуры в форме, в которой включены элементы управления.

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

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch (keyData)
    {
        case Keys.F5:
            // Send Refesh Event To Grid
            return true; // Mark Key As Handled

            // Add Any Extra Command Keys Here
    }

    return base.ProcessCmdKey(ref msg, keyData); // Resend To Base Function
}
0 голосов
/ 06 февраля 2009

Вы пытались записать событие в самой форме, а затем вызвать обработчик события для сетки данных? Вам необходимо установить для KeyPreview значение true, чтобы форма получала уведомления о событиях клавиатуры.

0 голосов
/ 06 февраля 2009

номер

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

...