![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Допустим есть динамически созданная форма.
Как добавить этой форме обработчик допустим на событие Paint()? |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
Припоздал. Это сообщение отредактировал(а) mrbrooks - 9.11.2009, 15:33 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Хотя более полная форма
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
An object reference is required for the non-static field, method, or property 'ConsoleApplication1.Program.main_Paint(object, System.Windows.Forms.PaintEventArgs)' *\Program.cs 47 27 ConsoleApplication1 Вот так вот. Как исправить? Это сообщение отредактировал(а) SneG0K - 9.11.2009, 15:40 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Обработчик должен иметь соответствующую сигнатуру. То есть у него должны быть параметры определённого типа. При использовании табулятора, всё само вставится. В случае с конкретным событием обработчик должен быть таким
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
||||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
А, все. Пока разобрался.
Добавлено через 1 минуту и 49 секунд я понял Добавлено через 10 минут и 45 секунд А вот еще вопрос. Как сделать так, чтоб события, на которые не повешены обработчики обрабатывались в самой винде? Как когда при создании формы с помощью WinAPI функцией DefWindowProc() |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Просто проблема в том, что как только форма отображается, она сразу зависает. Т.е. крестик не действует, перетащить нельзя. Только когда в консоли нажму энтер, то тогда приложение закрывается и все.
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
В main_Paint(object sender, PaintEventArgs e) не стоит вызывать MessageBox.Show, а делать только отрисовку. Если нужно вывести нукую-нубудь отладочную информацию, её можно вывести в файл или найти на форме место, куда её вывести.
|
|||
|
||||
diadiavova |
|
||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
А у меня другой вопрос: а зачем нужно запускать форму из консольного приложения?
То есть? Опиши ситуацию и что должно происходить.
Это уже от самой формы зависит. Надо смотреть, что там в коде прописано. Возможно где-то код закливается. Например если в обработчике Paint'а вызвать метод Invalidate, то он будет снова инициировать это событие и вызывать обработчик. То есть получится неявный рекурсивный вызов. Это просто пример. Добавлено через 1 минуту и 20 секунд
Для вывода отладочной информации существует Debug.WriteLine -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||||
|
|||||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Такие у меня тараканы. Мне нужно чтоб открывалось консольное окно, туда будут вводится некоторые команды, а результат будет выводится в появившемся окне. Добавлено через 3 минуты и 28 секунд
Вот например так. Форма просто создается и отображается. Зацикливаний нигде нет. Даже неявных. Обработки событий нет. Но форма виснет. Мож я ее создаю не правильно? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
В консольном приложении можно использовать формы - можно делять вывод в консоль, но нельзя делать Console.ReadLine() пока форма не закроется. После зоздания формы нужно вызвать Application.Run(main); чтобы форма могла реагировать на нажатие кнопок.
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
||||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |