У меня есть 2 формы ParentForm и дочерняя форма.В моей родительской форме у меня есть слушатель потока, который слушает канал, который обновляет область ParentForm.Теперь у меня есть ChildForm, который также нуждается в данных от слушателя, чтобы поместить его в область ChildForm.слушатель потока использует делегат для обновления моей ParentForm, когда он получает канал.
Мой ParentForm имеет их.
private delegate void UpdateLogCallback(string strFeed);
private Thread thr;
private void InitializeFeed()
{
...
// Get the feed connection
...
thr = new Thread(new ThreadStart(ReceivedFeeds));
thr.Start();
}
private void ReceivedFeeds()
{
string strFeed = GetFromStream();
// invoke my updater while connected
while(Connected)
{
this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { strFeed });
}
}
private void UpdateLog(string strFeed)
{
txtLog.AppendText(strFeed + "\r\n");
}
это работает нормально, теперь вот вопрос.Когда я открываю ChildForm из ParentForm, я также хочу обновить сентинную часть этой формы, используя то, что я получаю из ReceivedFeeds()
в моей ParentForm, как мне этого добиться?Я не могу создать другое соединение с фидом в ChildForm, так как это дублирует соединение и вызовет ошибку.Я просто хочу сделать то же самое, что UpdateLog()
сделает в ChildForm.
Edit
Я вызываю ChildForm, чтобы открыть событие OnClick
в родительской форме ипокажите.
// onclick event
ChildForm childForm = new ChildForm();
childForm.Name = ((ListBox)sender).SelectedItem.ToString();
childForm.ShowDialog(this);
Вот как я открываю свою ChildForm и как я вызываю методы внутри ChildForm в моем UpdateLogCallback
или в моем UpdateLog()
У меня также естьUpdateLog()
метод в моей ChildForm.