0

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

我设置了属性,比如表格应该出现在中心等

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

坦尔斯

4

2 回答 2

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!
于 2013-02-25T10:21:59.803 回答
0

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

尝试以下代码:

this.IsMdiContainer = true;
form.MdiParent = this;
form.Show();
于 2013-02-25T10:14:18.323 回答