用showdialog()替换show()

时间:2013-02-25 09:59:31

标签: c# showdialog

我在运行时使用form.showdialog();

从主gui表单打开表单

我设置类似的形象应该出现在中心等

 form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
form.ClientSize = new System.Drawing.Size(200, 50);
form.StartPosition = FormStartPosition.CenterParent;

并添加了标签

Label popupLabel1 = new Label();
form.Controls.Add(popupLabel1);
当我用form.show()替换form.showdialog()时,

问题我看不到标签的内容,现在这个新表单没有出现在中心。为什么没有出现这些设置属性?

Thanls

2 个答案:

答案 0 :(得分:1)

您没有显示完整的代码,这是必要的。何时何地执行代码?

你需要记住的是.Show()不是阻塞调用,而.ShowDialog()是阻塞调用。这意味着如果在 .Show / ShowDialog调用之后有代码,则在使用ShowDialog时不会立即执行 - 它将在表单关闭时执行。

假设你有这样的代码:

var form = new YourForm();
form.Show(); // NOT BLOCKING!
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
form.ClientSize = new System.Drawing.Size(200, 50);
form.StartPosition = FormStartPosition.CenterParent;
Label popupLabel1 = new Label();
form.Controls.Add(popupLabel1);

如果您将Show更改为ShowDialog,则需要在创建标签后将其移至最后。

var form = new YourForm();
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
form.ClientSize = new System.Drawing.Size(200, 50);
form.StartPosition = FormStartPosition.CenterParent;
Label popupLabel1 = new Label();
form.Controls.Add(popupLabel1);
form.ShowDialog(); // BLOCKING!

答案 1 :(得分:0)

使用Show()而不是ShowDialog()显示表单时,需要设置其MDI父子属性。

尝试以下代码:

this.IsMdiContainer = true;
form.MdiParent = this;
form.Show();