Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перхват нажатия клавиши? / 5 сообщений из 5, страница 1 из 1
12.11.2004, 16:26
    #32780211
HeadLess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перхват нажатия клавиши?
Как перехватить нажатие клавиши процедурой обработки в форме, когда активным в даный момент есть объект типа DataGrid, и стандартное событие формы KeyDown не срабатывает?
...
Рейтинг: 0 / 0
12.11.2004, 16:37
    #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
16.11.2004, 13:02
    #32784122
HeadLess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перхват нажатия клавиши?
А кусочек кода можно посмотреть? А то я наследовать то наследовал, а передать в форму все равно не могу.
...
Рейтинг: 0 / 0
16.11.2004, 14:43
    #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
16.11.2004, 15:43
    #32784725
Алексей Р.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перхват нажатия клавиши?
У формы есть свойство KeyPreview - оно случайно не по этому поводу ?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перхват нажатия клавиши? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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