Распространение событий из одной формы в другую форму в C#
Как я могу нажать кнопку в одной форме и обновить текст в текстовом поле в другой форме?
3 ответов
Если вы пытаетесь использовать WinForms, вы можете реализовать пользовательское событие в своей "дочерней" форме. Вы можете запустить это событие, когда была нажата кнопка в вашей форме "ребенок".
ваша" родительская " форма будет прослушивать событие и обрабатывать его собственное обновление текстового поля.
public class ChildForm : Form
{
public delegate SomeEventHandler(object sender, EventArgs e);
public event SomeEventHandler SomeEvent;
// Your code here
}
public class ParentForm : Form
{
ChildForm child = new ChildForm();
child.SomeEvent += new EventHandler(this.HandleSomeEvent);
public void HandleSomeEvent(object sender, EventArgs e)
{
this.someTextBox.Text = "Whatever Text You Want...";
}
}
грубо; одна форма должна иметь ссылку на некоторый базовый объект, содержащий текст; этот объект должен инициировать событие при обновлении текста; текстовое поле в другой форме должно иметь делегат, подписывающийся на это событие, которое обнаружит, что базовый текст изменился; как только делегат текстового поля будет проинформирован, текстовое поле должно запросить базовый объект для нового значения текста и обновить текстовое поле новым текстом.
Предполагая WinForms;
Если текстовое поле привязано к свойству объекта, необходимо реализовать интерфейс INotifyPropertyChanged для объекта и уведомить об изменении значения строки.
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string title;
public string Title {
get { return title; }
set {
if(value != title)
{
this.title = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Title"));
}
}
}
с вышеизложенным, если вы привязываетесь к свойству Title-обновление будет проходить "автоматически" ко всем формам/текстовым полям, которые привязываются к объекту. Я бы рекомендовал это выше отправки конкретных событий, так как это общий способ уведомления привязки обновления свойств объекта.