У меня есть класс BaseControl
, который делает все, что мне нужно для элементов управления..Net UserControl, реализующий методы Show и ShowDialog
Удобно для меня использовать метод void Show
и DialogResult ShowDialog
из моего контроля.
UPDATE это для удобства я использую мой BaseControls
повсюду и, в некоторых случаях, я хочу possibilit показать (шоу-диалог) их самым простым из возможных кода ...
Здесь это код метода ShowDialog
, метод Show
быть очень похожи:
Form ContainingForm = null;
public DialogResult ShowDialog(string title, Control parent) {
ContainingForm = new Form();
this.Dock = DockStyle.Fill;
ContainingForm.Controls.Add(this);
ContainingForm.Text = title;
//
DialogResult res = ContainingForm.ShowDialog();
ContainingForm.Close();
return res;
}
private void Close(DialogResult result) {
if (ContainingForm != null) {
ContainingForm.DialogResult = result;
// original code: form is not closing...
// ContainingForm.Close();
}
}
// button on BaseControl closing the control
protected void Button_Click(object sender, EventArgs e) {
this.Close(DialogResult.OK);
}
Я попробовал подход, предложенный в this post, отсюда Close в методе ShowDialog
. Как в исходной версии, так и в пересмотренной версии с использованием вышеприведенного сообщения окно не закрывается.
Я прочитал об отправке сообщения «Закрыть» в ContainingForm
, но с помощью Invoke
тоже не работал.
Также я должен ожидать некоторые другие проблемы при использовании Show
вместо ShowDialog
, так как форма не блокирует поток пользовательского интерфейса?
Любой, кто знает ответ на этот вопрос?
чем проблема с 'form' который сделал вам попробовать что-то вроде этого? –
Класс Form не имеет параметризованного конструктора, поэтому он ясно говорит о том, что здесь происходит: 'ContainingForm = new Form (parent);' – LarsTech
Наследование для совместимости с проектами без winforms ... – neggenbe