Мне нужна помощь в подключении двух форм окна. Мне нужно, чтобы при нажатии кнопки в форме 2 форма одна активировала бы определенный метод? Я пытался использовать события, но я не мог заставить его работать.Как подписаться на событие в другой форме C#
ответ
Вместо того, чтобы пытаться обрабатывать Нажмите событие кнопки (что вы можете сделать это просто) его лучше позвони метод другой формы в в Click обработчик событий кнопки:
- Вы должны иметь справку о другой форме вызовите его метод.
- Метод другой формы должен быть общедоступным.
код в виде 2:
//You should set form1Instance=... somewhere in code
Form1 form1Instance;
public void button1_Click(object sender, EventArgs e)
{
//....
form1Instance.Method1();
}
код в Form1:
Public void Method1()
{
//...
}
public class Form1
{
private Form2 form2;
public Form1(Form2 frm2)
{
form2 = frm2;
form2.ButtonClicked += button_clicked
}
public void button_clicked(object sender, EventArgs e)
{
frm1btn_click(null, null);
}
}
public class Form2
{
public event EventHandler ButtonClicked;
Public Form2()
{
}
public void frm2btn_click(object sender, EventArgs e)
{
if(buttonClicked != null)
{
buttonClicked(null, null);
}
}
}
public class main
{
public static void main(string[] args)
{
Form2 form2 = new Form2();
Form1 form1 = new Form1(form2);
}
}
Это основная идея для ваших событий. Когда кнопка в форме2 нажимает, активируйте свое событие. Убедитесь, что form1 прослушивает событие (это строка + =).
Ваш основной метод должен создавать экземпляры обеих форм.
Также имейте в виду, что это не лучшая практика. Необычно, что формы запускают события друг на друга, и вам, скорее всего, нужна схема базовой модели.
Это было бы более полным, если бы был код.
Вы можете использовать концепцию MVVM Light. Компонент Messenger
MVVM Light легко позволяет передавать данные между классами.
выполните следующие действия:
1) по нажатию кнопки в form2 и писать код, как показано ниже:
// Sends a message with a Student object.
var student = new Student{ FirstName = "Gul", LastName = "Ershad" };
Messenger.Default.Send(student);
2) Получить входящее сообщение от form2 к form1 и напишите код, как показано ниже:
// Registers for incoming Student messages.
Messenger.Default.Register<Student>(this, (student) =>
{
// Works with the Student object.
});
Подробнее читайте в следующей ссылке. Его очень мощная концепция передачи сообщений между классами.
[MVVM Light][1]
- 1. Подписаться на событие в C#?
- 2. как я могу подписаться на событие usercontrol
- 3. C# .NET надлежащее событие подписаться и не подписаться
- 4. как событие ionic2 Подписаться
- 5. Обрабатывать событие управления, определенного на другой форме
- 6. Не могу подписаться на событие
- 7. подписаться на jQuery.ajax() событие успеха
- 8. Как подписаться на jms в другой программе?
- 9. Подписаться на событие с отражением
- 10. Как подписаться на событие эмиттер один раз?
- 11. Как подписаться на событие внутри класса фасада
- 12. Как подписаться на навигационное событие Prism?
- 13. Как создать пользовательское событие в основной форме на C#?
- 14. подписаться на событие буфера обмена из браузера
- 15. Утилизация класса, что подписаться на событие
- 16. Событие KeyUp на форме не запускается? C#
- 17. Как подписаться на конкретное событие подключения сетевого адаптера в .NET
- 18. C# Попытка подписаться на мероприятие в Unity
- 19. Метод C# pass, который должен подписаться на событие
- 20. подписаться на событие с объектом изображения - WPF
- 21. KineticJS однообразное событие запуска на другой форме на dragover
- 22. Как создать событие в веб-форме на C#?
- 23. WPF Datagrid - подписаться на событие загрузки ячейки?
- 24. подписаться на событие щелчка не работает
- 25. GridView не подписаться на событие CollectionChanged
- 26. Подписаться на событие для кнопки «Следуй за»?
- 27. EXM подписаться на список C#
- 28. Как подписаться на события другого класса в C#?
- 29. Как подписаться на facebook как событие для iframe Как метод
- 30. В Angular2, как я могу подписаться на событие пользовательских компонентов?
показать код своей заявки –
Это две формы окон в одном проекте или в отдельных приложениях? – rmn36
введите код –