Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
1

Обработчики событий работают не корректно

08.07.2013, 22:03. Показов 1205. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вечер добрый коллеги. Есть проблемка с обработкой событий в формах. Имеются две формы Form1 и Form2. Вторую форму создаю в ходе работы первой и подписываюсь на событие двойного клика:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void ButtonForm1_Click(object sender, EventArgs e)
{
    Form2 Frm = new Form2();
    Frm.DataGrid.DoubleClick += new EventHandler(DataGrid_DoubleClick);
    Frm.Show();
}
 
private void DataGrid_DoubleClick(object sender, EventArgs e)
{
    if (GroupSelect != true)
    {
        <код, выполняющийся в Form1 при наступлении события DoubleClick в классе Form2>
    }
    else
    {
        <код, выполняющийся в Form1 при наступлении события DoubleClick в классе Form2>
    }
}
Собственно Form2:

C#
1
2
3
4
private void DataGrid_DoubleClick(object sender, EventArgs e)
{
    <Код выполняемый в Form2 при двойном клике>
}
Проблема в том, что сначала отрабатывает код в Form1 и только потом начинает работать код в Form2. По идее должно быть наоборот. Кто сталкивался с подобными вещами, подскажите, как решается? Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2013, 22:03
Ответы с готовыми решениями:

Не работают обработчики событий по конпкам на вкладках
Не могу понять в чем причина, сделал обработчик одним сообщением для упрощения - все равно не...

Обработчики событий
Предположим имеется форма с 2мя компонентами: button1 и PictureBox1. Для них определены обработчики...

Обработчики событий WinForm
Разместите на форме три кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие...

Вынести обработчики событий в отдельный класс
Доброго времени суток. Столкнулся с проблемой, которая уже вроде неоднократно поднималась на...

4
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
09.07.2013, 08:16 2
А где идет подписка на событие DataGrid.DoubleClick во второй форме? В InitializeComponents, в конструкторе?
Вообще, порядок вызовов в стандарте не определен. И на него закладываться не хорошо.
Если вам нужен такой порядок - просто вызывайте оба метода из одного обработчика.
0
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
09.07.2013, 13:55  [ТС] 3
turbanoff, подписка на событие DataGrid.DoubleClick во второй форме идет в конструкторе. Проблема в том, что не получится все в одном обработчике сделать, т.к. форма№1 это документ, в котором заполняются реквизиты, а форма №2 это иерархический справочник из которого идет выборка нужного элемента для заполнения реквизитов документа. И в справочнике есть свой код на событие DoubleClick который в документ я никак не заложу.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
09.07.2013, 14:46 4
Есть же тысяча способов как сделать доступ из одной формы в другую, чтобы было возможно вызвать один обработчик из другого.
Например, передавать делегат в конструктор второй формы, там его запоминать и вызвать где необходимо.
C#
1
        Form2 Frm = new Form2(DataGrid_DoubleClick);
C#
1
2
3
4
5
6
        EventHandler form1DoubleClickHandler;
        public Form2(EventHandler handler)
        {
            InitializeComponent();
            this.form1DoubleClickHandler = handler;
        }
C#
1
2
3
4
5
private void DataGrid_DoubleClick(object sender, EventArgs e)
{
    <Код выполняемый в Form2 при двойном клике>
    form1DoubleClickHandler(sender, e);
}
1
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
09.07.2013, 19:55  [ТС] 5
Я сделал в итоге по-другому: в форме справочника создал событие ItemSelected, а документом подписался на это событие. Собственно когда происходит выборка нужного элемента, активируется мое событие и документ дальше работает так, как надо.
0
09.07.2013, 19:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2013, 19:55
Помогаю со студенческими работами здесь

Обработчики событий для коллекции TextBox
Суть в том что у меня есть коллекция TextBox ов и для некоторых из них я хочу написать обработчики...

Не работают обработчики событий на canvas (WPF)
создал чистый проект, поместил canvas и прикрутил к нему MouseLeftButtonUp. но при отпускании...

Почему не работают обработчики событий для Blazor?
Имелось Веб-приложение ASP.NET Core 3.0 с использованием шаблона MVC. Пытаюсь в него добавить...

Не валидно работают обработчики событий для StringGrid
Делаем: с запуском откроется консоль, жмём интер открывается форма, файл-создать, в консоли вводим...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru