Как перенести данные из одной формы в другую, используя обработчик событий - PullRequest
2 голосов
/ 07 июня 2019

Я создаю приложение для Windows Forms, которое, как полагают, называется дизайном одноэлементной программы. Это использует основную форму с различными вариантами для выбора пользователем. Эти опции в свою очередь имеют соответствующие формы с прикрепленными уникальными функциями. Когда основная форма выполняется и пользователь выбирает параметр, форма параметра затем скрывается от пользователя (в отличие от закрытия), пока его снова не выбрали. Примечание. НЕ ЗАКРЫТО.

У меня есть форма с полем richtext, и после проверки правильности содержимого я хочу отправить эти данные в другую форму, в которой есть окно просмотра списка ... в основном обновляя поле просмотра списка в другой форме.

Все примеры, которые я видел, создают новые экземпляры форм, которые не идеальны в моем случае .... (так как мои формы уже открыты)

Это то, что у меня так далеко ...

public delegate void EventDelegate(Object sender, EventArgs e);

public event EventDelegate MessageForListView;

if (status == 0)
{               
  value = value.ToLower();
  using (StreamWriter sw = File.AppendText(path))
  {
      sw.WriteLine(value + " " + datestamp);
      MessageBox.Show(value.ToString() + " is now registered....... ");

     /// message event required here to pass back value and datestamp to the form holding the ListViewBox

      MessageForListViewEvent += NewDriverForm_MessageForListViewEvent;

      ReSetInput();
  }
}


private void NewDriverForm_MessageForListViewEvent(object sender, EventArgs e){

 /// how do I write the data into the ListViewBox or call the reload procedure again.

}

NewDriverForm получил данные, и я хочу отправить их на viewRegisterForm, в котором есть окно просмотра списка. Размещенный код находится в NewDriverForm

Заранее спасибо ... очень ценю помощь

1 Ответ

1 голос
/ 07 июня 2019

Вы можете создать статическое событие в NewDriverForm и указать тип данных, который хотите отправить:

public static EventHandler<TypeOfDataToBeSend> MessageForListView; 

и передать данные в вызов:

MessageForListView?.Invoke(this, objectOfYourDataType);

Теперь зарегистрируйте это событие в viewRegisterForm и извлеките эту информацию в методе зарегистрированного события:

NewDriverForm.MessageForListView += NewDriverForm_MessageForListViewEvent;


public void NewDriverForm_MessageForListViewEvent(object sender, TypeOfDataToBeSend objectOfYourDataType)
{
      // use here the objectOfYourDataType
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...