[英]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.