[英].Net UserControl implementing Show and ShowDialog methods
我有一個BaseControl
類,幾乎可以完成控件的所有工作。
對我來說,從控件中實現void Show
和DialogResult ShowDialog
方法非常方便。
更新這是為了方便起見,因為我在各處使用了BaseControls
,在某些情況下,我希望可能的對象以盡可能簡單的代碼顯示(顯示對話框)。
這是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);
}
我試着在建議的方法這篇文章 ,因此在關閉ShowDialog
方法。 在使用上述文章的原始版本和修訂版本中,該窗口均未關閉。
我讀到有關向“ ContainingForm
”發送“關閉”消息的信息,但使用Invoke
也不起作用。
另外,當使用Show
代替ShowDialog
,由於表單不會阻止UI線程,我是否還會遇到其他問題?
任何人都知道答案嗎?
事實證明,以下代碼似乎有效:
private void Close(DialogResult result) {
if (ContainingForm != null) {
ContainingForm.DialogResult = result;
ContainingForm.Close();
ContainingForm.Dispose();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.