我有一个Windows表单,我想打开一个状态表单,上面写着"正在保存...",然后在保存完成时消失.我想将这个小状态表单放在调用表单的中间.我已经尝试将"StartPosition"设置为"CenterParent",但它确实有效.我从另一个表单创建状态表单,如下所示:
SavingForm saving = new SavingForm();
savingForm.Show();
Thread.Sleep(500); //Someone said this is bad practice ... why?
savingForm.Close();
呼叫形式不是"父母"吗?当我设置一个保存手表时说它没有父母.
我试过了:
SavingForm saving = new SavingForm();
saving.Parent = this;
savingForm.Show();
Thread.Sleep(500);
savingForm.Close();
它会引发异常"顶级控件无法添加到控件中".
如何将此状态窗口置于调用窗口中心?
提前致谢
Pau*_*sik 18
我会做这样的事情:
SavingForm saving = new SavingForm();
savingForm.ShowDialog(this);
在SavingForm中,我将在加载处理程序中启动一个运行500毫秒的计时器,然后在完成后关闭表单.这样清洁.ShowDialog还会锁定您的UI以仅显示保存表单,并且不允许用户使用任何内容.
Cor*_*ton 15
用这个:
saving.Show(this);
在显示表单时设置所有者.
编辑:该ShowDialog()方法还有一个重载,让您指定所有者,如果这是您决定去的路线:
saving.ShowDialog(this);
如果将父级 ( this) 传递给所有者,例如
SavingForm saving = new SavingForm() { Owner = this };
那么您可以在子表单中访问 Owner 的属性和方法(在本例中SavingForm),前提是将 Owner 的属性Modifier设置为Internal或Public针对您需要访问的每个属性(您可以直接在源代码中编辑修饰符,或通过表单的设计器属性-Modifier每个控件都有一个属性)。
您可以在这里找到对 Owner、Parent 和 ParentForm 之间差异的很好的解释。
注意:saving.Show(this);像or一样传递它对saving.ShowDialog(this);我的情况没有帮助。
| 归档时间: | 
 | 
| 查看次数: | 54651 次 | 
| 最近记录: |