![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
задача такая: при нажатии на ентер номер 13 превратить в 9. т.е. чтоб программа восприняла его как таб. или вообше 0.
в делфи так делаю
а как в шарпе? спосибо |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Можно перехватывать сообщение, возникающее при нажатии кнопки. Для этого следующие обработчики событий KeyDown и KeyPress следует добавить в класс формы (или иного контрола) :
(в примере рассматривается предотвращение нажатия нецифровых символов)
Подробнее... Пример несколько более общий, может это лучше? = В Вашем случае будет достаточно одной проверки на (e.KeyCode == Keys.Enter). Это сообщение отредактировал(а) marcusmae - 30.5.2007, 18:32 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
marcusmae спосибо.
этот метод мне известен. но он не решает задачу замены кода клавиши. правда, если нечего лущего не наиду, восползуюс им |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Ой, самого главного не рассказал! Сорри. Да, я показал, как решается задача отлова и нейтрализации клавиши, которую Вы хотите заменять. Остаётся в одном из обработчиков сгенерить новую клавишу. Делается с помощью метода класса SendKeys. Например, сгенерить TAB будет так :
Я правильно понял, что Вы хотите эмулировать нажатие другой клавиши по нажатию заданной? Существует ещё один способ, основывающийся на работе с WndProc, то есть напрямую с оконными сообщениями - описан, например здесь. Но он вряд ли понадобится, если только Вы не захотите эмулировать специальные команды типа закрытия/минимизации/максимизации окон и тд. Это сообщение отредактировал(а) marcusmae - 30.5.2007, 20:18 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
SendKeys явно не подходит, он посилает строку и эта строка пишется в елементе.
хук ставить не хотел, но видать придется. спосибо |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Прям так и пишет что ли "{TAB"? - Это странно. Вы не забыли ведущий спецсимвол?
Это сообщение отредактировал(а) marcusmae - 30.5.2007, 21:52 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Retro |
|
|||
![]() Диалектик ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1934 Регистрация: 28.6.2005 Где: Киев Репутация: 9 Всего: 117 |
Если нужно поменять Enter на Tab, например в textBox(или еще где), я делаю так:
Или я неправильно понял САБЖ? |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Кажется, нет, kobra хочет подменять нажатие клавиш... Хотя я и сам перестал понимать. Если в контроле активизирована область заполнения, то что жми enter, что эмулируй - всё-равно он будет "отображаться". -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
в этом конкретном случае, подмена нужна для следуишего: представим себе форму ввода данних. на нем много едитов, комбо и т.д. и т.п. для перехода между контролами стандартно используется Tab и Shift+Tab. код показанный в первом посте, перехватывает Enter превращая его в Tab, при этом нажимая на Enter происходит передача курсора с одного контрола на другои. тоже самое собираюс сделать на шарпе. как понял, и тут придется воспользоватся WndProc-ом, правда кое что там не понял. начну разбиратся. |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
нашел всеже, и тут тотже метод что и в делфи, а я сколько мучался
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |