powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перхват нажатия клавиши?
5 сообщений из 5, страница 1 из 1
Перхват нажатия клавиши?
    #32780211
HeadLess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как перехватить нажатие клавиши процедурой обработки в форме, когда активным в даный момент есть объект типа DataGrid, и стандартное событие формы KeyDown не срабатывает?
...
Рейтинг: 0 / 0
Перхват нажатия клавиши?
    #32780250
Sanitto!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартный KeyDown для DataGrida не определен..

Придется в наследнике DataGrida переопределять метод ProcessDialogKey, и потом работать с этим наследником.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
protected override bool ProcessDialogKey(Keys keyData)
{
 //---------------------------------------------------------------------
 //            обработка нажатия
 //         я, например, здесь событие вешал, с которым потом работал
 //---------------------------------------------------------------------
 return base.ProcessDialogKey (keyData);
}

Правда говорят для текстовых клавиш лучше использовать ProcessKeyPreview.
А ProcessDialogKey - для стрелок, Enter и т.д.
:)
...
Рейтинг: 0 / 0
Перхват нажатия клавиши?
    #32784122
HeadLess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А кусочек кода можно посмотреть? А то я наследовать то наследовал, а передать в форму все равно не могу.
...
Рейтинг: 0 / 0
Перхват нажатия клавиши?
    #32784511
Sanitto!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какого именно кода?
Я немного не догнал, в чем конкретно проблема..

Вот потомок ДатаГрида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
//Делегат
	public delegate void DlgKeyPress(object sender, Keys keyData);
//Собственно потомок
	public class MyDataGrid: System.Windows.Forms.DataGrid
	{
		//Событие "нажатие клавиши"
		private DlgKeyPress OnDialogKeyPress;
		public event DlgKeyPress DialogKeyPress
		{
			add
			{
				OnDialogKeyPress += value;
			}
			remove
			{
				OnDialogKeyPress -= value;
			}
		}

 //Переопределяем метод
 		protected override bool ProcessDialogKey(Keys keyData)
		{
			//Генерим событие
			DlgKeyPress tmpDelegate = OnDialogKeyPress;
			if (tmpDelegate != null)
			{
				tmpDelegate(this, keyData);
			}

                       return base.ProcessDialogKey (keyData);
                 }
            }
А в форме потом работаю с событием DialogKeyPress у MyDataGrid. Но это мне так удобно. А можно всю обработку повесить прямо в переопределяемом методе.
...
Рейтинг: 0 / 0
Перхват нажатия клавиши?
    #32784725
Алексей Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У формы есть свойство KeyPreview - оно случайно не по этому поводу ?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перхват нажатия клавиши?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]