powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Передать действие с одной формы на другую.
20 сообщений из 20, страница 1 из 1
Передать действие с одной формы на другую.
    #39796083
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу нажать кнопку или чекбокс на одной форме а выполнить действие на другой.
Как правильно это сделать?
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796093
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) события
2) интерфейсы
3) делегаты
4) хранение ссылки в одной форме на другую
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796130
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Я хочу нажать кнопку или чекбокс на одной форме а выполнить действие на другой.
Как правильно это сделать?

Наверное как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
    private void button1_Click(object sender, EventArgs e)
        {
            var form2 = new Form2();
                form2.Visible = true;
                form2.button1.PerformClick();
        }   
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796145
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eoltjenya7Я хочу нажать кнопку или чекбокс на одной форме а выполнить действие на другой.
Как правильно это сделать?

Наверное как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
    private void button1_Click(object sender, EventArgs e)
        {
            var form2 = new Form2();
                form2.Visible = true;
                form2.button1.PerformClick();
        }   


а если Form2 уже открыта? зачем мне создавать инстанс формы?
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796149
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Тогда не надо создавать. Просто PerformClick
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796150
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в MainForm есть public CAN_Control.UserControlCan userControlCan1;

в CanControlForm я нажимаю на кнопку
Код: c#
1.
2.
3.
4.
5.
private void buttonCan1Connect_Click(object sender, EventArgs e)
{

    MainForm.userControlCan1.Connect("COM3", 500);
}



ругается
Error CS0120 An object reference is required for the non-static field, method, or property 'MainForm.userControlCan1'
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796161
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Как правильно это сделать?
Правильно - понятие растяжимое. Делай как умеешь.
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796164
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий Мухjenya7Как правильно это сделать?
Правильно - понятие растяжимое. Делай как умеешь.
как мне вызвать меод в главной форме?
MainForm.userControlCan1.Connect("COM3", 500);
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796166
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7У меня в MainForm есть public CAN_Control.UserControlCan userControlCan1;

в CanControlForm я нажимаю на кнопку
Код: c#
1.
2.
3.
4.
5.
private void buttonCan1Connect_Click(object sender, EventArgs e)
{

    MainForm.userControlCan1.Connect("COM3", 500);
}




ругается
Error CS0120 An object reference is required for the non-static field, method, or property 'MainForm.userControlCan1'
И правильно ругается, нужен объект (инстанс), а не тип (класс), то есть:
Код: c#
1.
2.
3.
var form = new MainForm();

form.userControlCan1.Connect("COM3", 500);


Но похоже MainForm - это главная форма приложения Application.Run(new MainForm()) , и делать так, как предложил Eolt - это тот ещё говнокод.

В чём задача-то состоит, если простыми словами?
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796169
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Дмитрий Мухпропущено...

Правильно - понятие растяжимое. Делай как умеешь.
как мне вызвать меод в главной форме?
MainForm.userControlCan1.Connect("COM3", 500);
Дочерняя форма не должна уметь вызывать методы главной.
Если в главной форме создаётся дочерняя, то можно подписаться на события в последней и в обработчике в главной форме вызвать меод.
Либо при создании дочерней формы передать в неё делегат.

Либо замутить свой Command Routing, или Redux :)
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796177
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что вообще метод подключения к COM3 порту делает в форме?

Сначала засунут не туда, а потом спрашивают как вызвать :)
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796208
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухДочерняя форма не должна уметь вызывать методы главной.+100500
формы вообще не должны вызывать методы друг друга. Появился общий код - в отдельный класс его.
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796218
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня просто не хватает места разместить все контролы на главной форме. Много дата гридов и так далее. Вот я и хочу вынести контролы настроек и управления на отдельную форму. Но эти контролы воздействуют на объекты на главной форме.
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796229
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай просто дополнительную вкладку на главной форме и не морочь голову
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796243
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Нарисуй на листчке окна и их переходы. Потом сюда. Это не имеет отношения к программирования. Это БА делает.
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796259
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    private MainForm mainform;

    public CanControlForm(MainForm main_form)
    {
        InitializeComponent();
        mainform = main_form;
    }

    private void buttonCan1Connect_Click(object sender, EventArgs e)
    {       
          mainform.userControlCan1.Connect(comboBoxCan1ComPort.SelectedItem.ToString(), comboBoxCan1Speed.SelectedIndex+1);

    }



в главной форме

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 private void buttonCanControl_Click(object sender, EventArgs e)
{
      if (can_control_form != null)
          can_control_form.Close();
      
       can_control_form = new CanControlForm(this);
       can_control_form.Show();
}   



вроде работает.
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796277
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Молодец.
private можно не писать. По умолчанию.
Имя
this.mainForm = mainForm;
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796339
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltjenya7Я хочу нажать кнопку или чекбокс на одной форме а выполнить действие на другой.
Как правильно это сделать?

Наверное как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
    private void button1_Click(object sender, EventArgs e)
        {
            var form2 = new Form2();
                form2.Visible = true;
                form2.button1.PerformClick();
        }   


можно еще подвинуть курсор мышки и кликнуть
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796435
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesEoltпропущено...


Наверное как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
    private void button1_Click(object sender, EventArgs e)
        {
            var form2 = new Form2();
                form2.Visible = true;
                form2.button1.PerformClick();
        }   


можно еще подвинуть курсор мышки и кликнуть
Найти через EnumChildWindows хэндл кнопки, и запостить в него WM_KEYDOWN.
...
Рейтинг: 0 / 0
Передать действие с одной формы на другую.
    #39796842
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7сделал так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    private MainForm mainform;

    public CanControlForm(MainForm main_form)
    {
        InitializeComponent();
        mainform = main_form;
    }

    private void buttonCan1Connect_Click(object sender, EventArgs e)
    {       
          mainform.userControlCan1.Connect(comboBoxCan1ComPort.SelectedItem.ToString(), comboBoxCan1Speed.SelectedIndex+1);

    }




в главной форме

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 private void buttonCanControl_Click(object sender, EventArgs e)
{
      if (can_control_form != null)
          can_control_form.Close();
      
       can_control_form = new CanControlForm(this);
       can_control_form.Show();
}   




вроде работает.
Гы...

Прибил гвоздями, вроде держится.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Передать действие с одной формы на другую.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]