![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| styu |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Есть класс для перехвата нажатия кнопки Del с клавиатуры
Вызываю этот класс в классе формы
Отладчик выдает ошибку "No overload for method 'MyMessageFilter' takes '0' arguments" в строке
Как можно решить эту проблему, подскажите, пожалуйста |
||||||
|
|||||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
А скобки кто добавлять будет?)
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| styu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Sfate, Спасибо, попробую ..
Добавлено через 50 секунд KelTron, В проекте есть, на сайте у меня очепатка получилась :( |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
А, ну это потому что у тебя нет конструктора по умолчанию в классе MyMessageFilter.
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| styu |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
KelTron,
А что это означает? Что надо сделать? Добавлено через 4 минуты и 15 секунд Sfate,
Я записала так:
Но ошибка осталась прежней. |
||||||
|
|||||||
| styu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
||||
|
||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
небходимо передавать в функцию какие то значения, или все время будет ошибка о ненулелевых аргументах функции... т.е.
где SomeKindOfForm будет присваиваться как значение f ... естественно вместо SomeKindOfForm пишем свое необходимое значение;) --------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| styu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Sfate,
Передо мной стояла задача: Есть база, которую отображает DataGrid, мне надо, чтобы при нажатии на клавишу Del клавиатуры, появлялось окошко с вопросом, хочу ли я действительно удалить запись - это все я реализовала в классе
теперь я не знаю, как из класса формы вызвать класс MyMessageFilter Для меня это сложно, я не понимаю, что надо передавать в эту функцию? |
|||
|
||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
styu, Вы, переделываете чужую программую? или... Вы не можете разобрать, что сами написали?
Это сообщение отредактировал(а) Sfate - 30.1.2010, 03:01 --------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| PaZ1T1V |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 26.2.2008 Где: Багдад ) Репутация: нет Всего: нет |
а зачем мудрить? зачем создавать свой класс ? не легче ли воспользоваться стандартным MessageBox
if (MessageBox.Show([наш вопрос в кавычках], [заголовок окна тоже в кавычках], MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { удалить то что надо } все это делается в обработчике нажатия клавиш и при условии если e.KeyCode == Keys.Del помоему так, писал по памяти... или я не правильно понял? а если уж до зарезу нужно обрабатывать с помощью своего класса, то делаем так PS код класса и формы в студию.... телепатов нету ;) не так.... Делаем класс, в вашем случае MyMessageFilter: IMessageFilter делаем конструктор но не по умолчанию
переопределяем метод PreFilterMessage
далее открываем Program.cs
вуаля! работает! Это сообщение отредактировал(а) PaZ1T1V - 31.1.2010, 19:56 --------------------
[size=8]Atention please!!![/size] [size=6]Кривые руки[/size] |
||||||
|
|||||||
| styu |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
PaZ1T1V, Спасибо, ошибка больше не вылетает. Но при нажатии клавиши del запись не удаляется, но и не появляется окошка с запросом. Выкладываю код класса:
Далее
|
||||
|
|||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
Да тут класс совсем не нужен, только сильно усложняет всё.
Лучше сделать как PaZ1T1V предлагал через обычный обработчик:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| PaZ1T1V |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 26.2.2008 Где: Багдад ) Репутация: нет Всего: нет |
поставте return true, я ж писал, что return false для того, чтобы игнорировать обработку сообщения
PS должно все заработать --------------------
[size=8]Atention please!!![/size] [size=6]Кривые руки[/size] |
|||
|
||||
| styu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
PaZ1T1V, установила return true, ничего не изменилось
|
|||
|
||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
разве не здесь затесалась ошибка? если мы создали экземпляр ксласса Form1 form, проинициализировали им фильтр сообщений, то не его ли надо передавать на запуск приложения? т.е. вместо Application.Run(new Form1()); надо написать Application.Run(form); |
|||
|
||||
| styu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Ceiceron, К сожалению, это тоже не помогло
|
|||
|
||||
| Ceiceron |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
Естественно, потому что надо внимательно читать, что пишут другие.
у вас в коде есть строчка:
Вы не добавив свой фильтр, его удаляете, как думаете будет у системы какая либо реакция? замените эту строку на
Все должно заработать, хотя я думаю лучше при удалении строки подобные проверки проводить в соотвествующих обработчиках DataGrid. Это сообщение отредактировал(а) Ceiceron - 1.2.2010, 23:21 |
||||
|
|||||
| styu |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Ceiceron,
Вы правы, переписала
на
все заработало, но с формой творится что -то страшное, она грузится минут 5, потом замирает и с ней уже ничего сделать нельзя, кроме как нажать кнопку del, на нее единственную она только и реагирует |
||||
|
|||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
styu, зря вы взялись делать перехват событий на уровне сообщений окна.
Воспользуйтесь советом KelTron это будет работать эффективнее и вам более понятно. Это сообщение отредактировал(а) Ceiceron - 2.2.2010, 00:19 |
|||
|
||||
| PaZ1T1V |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 26.2.2008 Где: Багдад ) Репутация: нет Всего: нет |
Да, забыл сказать, а точнее и не думал даже о том, что остальная обработка сообщений будет игнорирована, тут выхода два: или делать через обработчик нужного контрола, как предлагал сначала я а потом KelTron или обрабатывать все в классе вплоть до последней буковки и нажатия мыши, причем нажатие должно обрабатываться по разному на каждом контроле....как это сделать я не знаю...
--------------------
[size=8]Atention please!!![/size] [size=6]Кривые руки[/size] |
|||
|
||||
| styu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Пока боюсь всех обнадеживать, но на работе форма грузится нормально, достаточно шустро, дома она здорово зависала. Не знаю связано ли это как -то с тем, что у меня на работе стоит VS2003, а дома VS2005. И на работе форма ведет себя адекватно и даже при нажатии на клавишу Del, появляется окошко с вопросом, но как-то не стабильно работает, как мне кажется, реакция на разрешение на удаление и отказ от него, завтра еще буду тестировать
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |