簡體   English   中英

.Net UserControl實現Show和ShowDialog方法

[英].Net UserControl implementing Show and ShowDialog methods

我有一個BaseControl類,幾乎可以完成控件的所有工作。

對我來說,從控件中實現void ShowDialogResult 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM