繁体   English   中英

用showdialog()替换show()

[英]replacing show() with showdialog()

我正在运行时使用form.showdialog();从主GUI表单打开一个表单form.showdialog();

我设置属性likeform应该出现在中心等

 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()时,我看不到标签的内容,现在这个新表单没有出现在中间。 为什么这些设置属性没有出现?

谢谢

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

您需要记住的是.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!

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

尝试以下代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM