С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 4

Подписка на события Event

20.07.2012, 14:49. Показов 4738. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Существует основная форма, создается при запуске программы
C#
1
2
3
4
 public partial class MainWindow : Form
    {
        public static event msgWindow draw;
        ...
и дополнительная форма в конструкторе которой
C#
1
2
MainWindow.draw += new msgWindow(drawMessages);
...
Я правильно подписываюсь на события? Если делать не статичным событие в основной форме, то чтобы подписаться на него я должен в коде доп. формы создать экземпляр основной формы, что по логике не правильно (осн. форма должна быть 1).

Задача простая,- основная форма создает экземпляр доп. формы (в конструкторе которой идет подписка на событие Draw, основной формы) и вызывает событие Draw (на доп форме есть DataGrid,в которую при срабатывании события добавляются строчки). При 1 создании доп формы, строчки в DataGrid добавляются без проблем. Если форму закрыть (крестиком на форме) и снова в основной форме вызвать процедуру создания экземпляра доп. формы то выходит ошибка при добавлении строк в DataGrid - для добавления строка в начале надо определить столбцы. Почему так?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2012, 14:49
Ответы с готовыми решениями:

Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты
Господа, скажите пожалуйста, для чего использовать ключевое слово event в объявлении события, если события - это те же самые делегаты ?...

Подписка на события путём использования аксессоров
Здравствуйте! Никак не могу понять каким образом здесь происходит подписка на события с помощью аксессоров. Проходился несколько раз...

Event Args, Класс данных события
Вот есть такие моменты, когда что-то не понимаешь и начинаешь кипеть как чайник. Я пересмотреть уже все статьи и все видео связанные с...

6
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
20.07.2012, 15:35
Ответы на 7 самых частых вопросов по WinForms
Используй способ 2.7.2, самый удобный
0
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 4
20.07.2012, 16:09  [ТС]
У меня так же кроме, статичного класса. Вобщем событие отрабатывает как надо, вопрос почему он пишет что DataGrid не содержит колонок, колонки в ней заданы еще в редакторе до компиляции -
C#
1
2
3
4
 MessageWindow f3 = new MessageWindow();                                
                f3.Show();
                f3.Activate();
                draw();
на форме f3, в редакторе добавлен DataGrid с колонками. Draw() - событие формы, которая вызывает метод формы f3
C#
1
msgDataGridView.Rows.Add()
При первом вызове draw все работает. Потом я закрываю крестиком форму, и снова вызываю создание формы MessageWindow тем же кодом что выше, и тогда код останавливается на
msgDataGridView.Rows.Add()- со ссылкой что я не могу добавлять строки пока не объявлю колонки в DataGrid, почему такое поведение программы?
0
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
20.07.2012, 16:21
Цитата Сообщение от k2lr Посмотреть сообщение
MessageWindow f3 = new MessageWindow();
f3.Show();
f3.Activate();
draw();
У тебя событие возбуждается только после закрытия окна f3. Посмотри пошагово как возникает ошибка
0
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 4
20.07.2012, 16:45  [ТС]
Щас пошагово выполнял, все норм, на шаге
C#
1
MessageWindow f3 = new MessageWindow();
я попадаю в конструктор формы
следующий шаг
C#
1
f3.Show();
в нем я попадаю в метод f3.load
И так окно рисуется не модально, после f3.load я в возвращаюсь в код дальше
C#
1
f3.Activate();
-получаю фокус на форму.
И последний шаг
C#
1
draw();
На нем я попадаю в метод f3, который вызывается при этом событии, в нем строчка

C#
1
msgDataGridView.Rows.Add();
В первый заход все хорошо, в следующем заходе (после закрытия формы f3) пишет что в msgDataGridView нет колонок.
0
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
20.07.2012, 16:58
А обязательно заново создавать f3? может достаточно вызывать Show(). А объявить где-нибудь в классе 1 формы
0
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 4
20.07.2012, 18:12  [ТС]
попробую добить ситуацию, потом отпишусь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.07.2012, 18:12
Помогаю со студенческими работами здесь

События (event) и потоки (Thread) в СМО (система массового обслуживания)
Доброе время суток) Есть задача: смоделировать систему массового обслуживания (СМО) в Windows Form используя таймеры, потоки и события. ...

"Подписка" события на лямбда-выражение
Добрый день. Допустим есть код : private void Init() { MegaObject megaObject = new MegaObject(); ...

Форма и подписка на события
Не могу понять почему следующий код генерит исключение using System; namespace Book { class BookInfo { ...

Подписка на события динамически создаваемых элементов
При нажатии на кнопку на форму добавляются PictureBox-ы. Как описать для них событие Click? Помогите пожалуйста... :wall: Второй день не...

Динамическое создание компонентов и подписка их на события
Добрый день! Я начинающий программист, пытаюсь разобраться с созданием массивов control-ов и ихних событий. У меня есть три...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru