Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 29.09.2015
Сообщений: 3
1

Не отрабатывает эвент

05.01.2019, 23:21. Показов 323. Ответов 3

Помогите плз!
Есть код по запуску программы:

C#
1
2
3
4
5
6
7
8
9
10
...
            DataBaseForm form = new DataBaseForm();
            FormAddDepartament formAdd = new FormAddDepartament();
            MessageService Message = new MessageService();
            AddDep addDepartamet = new AddDep();
            ShowDepDB show = new ShowDepDB();            
 
            MainPresentor presentor = new MainPresentor(form, formAdd, Message, addDepartamet, show);
 
            Application.Run(form);
В form и в formAdd есть интерфейсы в которые обернуты евенты по нажатию кнопки, которые перебрасывают в "presentor", где уже написана логика нажатой кнопки, пример обертывания:
C#
1
2
3
4
5
6
7
8
9
10
11
12
public interface IFormAddDep {
event EventHandler AddDepClick;
}
...
public FormAddDepartament()
{butAddDep_Click.Click += AddDep_Click;}
...
private void AddDep_Click(object sender, EventArgs e)
        {            
            if (AddDepClick != null) AddDepClick(this, EventArgs.Empty);
        }
public event EventHandler AddDepClick;
По аналогии выполнена другая кнопка.
Когда в Application.Run(form); стоит form, то эвенты на кнопки из formAdd не работают, что логично и наоборот.
Как с этим бороться?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2019, 23:21
Ответы с готовыми решениями:

Регулярка findstr отрабатывает на одном файле, но не отрабатывает на другом
Приветствую ! Сижу, ругаюсь матом в голос потому, что регулярка срабатывает на одном текстовом...

Результат запроса отрабатывает в консоли, но не отрабатывает в модуле
Доброго времени суток! Собственно проблема в следующем, есть запрос, который возвращает дату...

эвент в эвенте
как в эвент баттен клик дописать еще эвент? private void button2_Click(object sender,...

Не работает эвент TextChanged
Добрый день. Пишу программу на Visual Basic из Studio 2010 Написал программку в которую из другой...

3
8178 / 4435 / 1737
Регистрация: 11.02.2013
Сообщений: 9,427
06.01.2019, 00:42 2
Скорее всего, причина в презентере. См. пример, где всё вызывается
0
Вложения
Тип файла: zip EventsSample.zip (12.5 Кб, 1 просмотров)
0 / 0 / 0
Регистрация: 29.09.2015
Сообщений: 3
07.01.2019, 00:13  [ТС] 3
ViterAlex, Не выходит вообще ни как, кнопка "Добавить" в "FormAddDepartament" вообще в MainPresentor не заходит, а кнопка "обновить" нормально отрабатывает, написаны абсолютно идентичны... не понимаю в чем причина...

DataBaseForm
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public interface IMainForm
    {               
        void showDBDep(Guid departamentID, string name, string code, Guid? parentDepartmentID);
        event EventHandler GetDBClick;  
    }
 
    public partial class DataBaseForm : Form, IMainForm
    {
        public DataBaseForm()
        {
            InitializeComponent();
            butShowAddDep.Click += ButShowFormAddDep_Click;
            butGetDB.Click += ButGetDB_Click;
        }
        void ButShowFormAddDep_Click(object sender, EventArgs e)
        {
            FormAddDepartament addDepartament = new FormAddDepartament();
            addDepartament.Show();
        }
        
        void ButGetDB_Click(object sender, EventArgs e)
        {
            dataGridView.Rows.Clear();
            if (GetDBClick != null) GetDBClick(this, EventArgs.Empty);  // ЗАХОДИТ отсюда в презентр          
        }
        
        public void showDBDep(Guid departamentID, string name, string code, Guid? parentDepartmentID)
        {        
            dataGridView.Rows.Add(departamentID, name, code, parentDepartmentID); 
        }
        public event EventHandler GetDBClick;
FormAddDepartament
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public interface IFormAddDep
....
public partial class FormAddDepartament : Form, IFormAddDep
{
         public FormAddDepartament()
        {
            InitializeComponent();
            butAddDep_Click.Click += AddDep_Click;
            butClose.Click += ButClose_Click;
        }
....
        private void AddDep_Click(object sender, EventArgs e)
        {            
            if (AddDepClick != null) AddDepClick(this, EventArgs.Empty);         //НЕ ЗАХОДИТ В ПРЕЗЕНТР
        }
....
        public event EventHandler AddDepClick;
}

MainPresentor
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MainPresentor
    {
        public readonly IFormAddDep _formAddDep;
        public readonly IMainForm _getInfoFromForm;
               
        public MainPresentor(IMainForm getInfoFromForm,
            IFormAddDep formAddDep)
        {
            _getInfoFromForm = getInfoFromForm;
            _formAddDep = formAddDep;
 
            _formAddDep.AddDepClick +=  _add_AddDepClick; 
            _getInfoFromForm.GetDBClick += _getInfoFromForm_GetDBClick;                 
        }
        void _add_AddDepClick(object sender, EventArgs e)
...
0
Вложения
Тип файла: zip DBMed.zip (11.47 Мб, 1 просмотров)
8178 / 4435 / 1737
Регистрация: 11.02.2013
Сообщений: 9,427
09.01.2019, 21:35 4
Только дошли руки посмотреть. У тебя в проекте два класса с методом Main: ShowDB.cs, Program.cs. Это недопустимо. Нужно оставить что-то одно.
Если запускать с Program.cs, то презентер не создаётся вообще. Событие же в форме вызывается.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2019, 21:35

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Очистить эвент Tapped с объекта
На объекте стоит эвент Tapped, нужно его очистить. В таком случае все ясно... Добавить:...

Эвент для Lineage2 серверов.
Это скрипт эвента для Lineage2 серверов. Эвент "Захват базы". Никак не могу дописать скрипт, чтобы...

Эвент для программно созданого контрола
Доброй ночи, друзья. Помогите пожалуйста с такой задачкой: создаю программно в цикле n-ное кол-во...

Эвент при завершении работы python скрипта
Пламенно приветствую! Ребят, есть ли в питоне события (или что-то иное), которые выполняются при...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.