Отображение нескольких экземпляров одной формы? - PullRequest
0 голосов
/ 23 июня 2010

У меня возникли серьезные проблемы с приложением WinForm, над которым я работаю.
В настоящее время я использую Form1.ShowDialog (); для отображения формы. Этот код содержится в фоновом работнике, который ищет изменения в базе данных. Использование Form1.ShowDialog (); Позволяет открывать только 1 форму за один раз, даже если в базе данных есть несколько изменений. Я хочу, чтобы несколько форм открывались одновременно, если в моей базе данных более одного изменения.

Когда я использую Form1.Show () ;, приложение взрывается. По какой-то причине метод Show () заставляет формы не отображаться должным образом (отсутствуют все элементы в форме).

Что я могу сделать, чтобы мой код работал так, как я хочу?

Редактировать: вот фрагмент кода

//result is a linq result
foreach (var row in result)
{
Form1 Form = new Form1();
Form.ShowDialog();
}

Ответы [ 2 ]

1 голос
/ 23 июня 2010

Две точки от макушки моей головы:

1) Чтобы открыть более одной формы, используйте немодальный (немодальный) метод (я думаю, метод show (). см. например http://msdn.microsoft.com/en-us/library/39wcs2dh.aspx

2) Я не уверен, что вы можете вызывать связанный с пользовательским интерфейсом метод из потока, не являющегося пользовательским интерфейсом. Возможно, вы захотите отправить событие в ваш поток пользовательского интерфейса из рабочего потока, и поток пользовательского интерфейса вызовет метод show

1 голос
/ 23 июня 2010

После первого взгляда я могу сказать вам следующее:

  • Showdialog не может работать так, как вы намереваетесь: этот самый метод делает владельца неактивным, пока диалог не будет закрыт. В вашем случае цикл будет приостанавливаться при первом показе диалога, затем возобновляться при закрытии формы, открытии новой и т. Д. До завершения цикла.
  • Что касается проблемы «шоу», то при создании пустых форм мне нужно больше информации. Остальной код и исключение (я), которые вы получаете.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...