如何在子窗体处于活动状态时禁用 MDI父窗体
本文关键字:窗体 MDI 活动状态 | 更新日期: 2023-09-27 18:32:46
我是 C# 的新学生,正在使用Microsoft Visual C# 2013。
我的目标是
- 在其 MDI父窗体中打开子窗体
- 禁用 MDI父窗体,当子窗体处于活动状态/打开状态时
VB.net 更容易
frmStuDetails.ShowDialog()
我试过了
1.
MyChildForm childForm = new MyChildForm();
childForm.ShowDialog(this);
结果。。。。但问题是子窗体无法在 MDI父窗体/容器中打开
阿拉伯数字。在 MDI父呼叫按钮下
frmViewStuList childForm = new frmViewStuList(this);
childForm.Owner = this;
childForm.Show();
在childForm_Activated
下
if (this.Owner != null)
{
this.Owner.Enabled = false;
}
在childForm_Deactivate
下
if (this.Owner != null)
{
this.Owner.Enabled = true;
}
结果。。。。。它使子窗体处于活动状态,但在子窗体关闭时冻结 MDI父
窗体3.
ChildForm child = new ChildForm();
child.Owner = this;
child.Show();
// In ChildForm_Load:
private void ChildForm_Load(object sender, EventArgs e)
{
this.Owner.Enabled = false;
}
private void ChildForm_Closed(object sender, EventArgs e)
{
this.Owner.Enabled = true;
}
结果。。。。这似乎是最佳选择,但子窗体无法在 MDIparent 中打开
如果您有任何其他想法,请提供帮助
谢谢
禁用
MDI 父级也会禁用对 MDI 子项的访问,因此这不是可行的方法。如果您已经在"伪造"MDI子项,我宁愿将子窗体作为模态对话框打开。您可以设置其样式并将其居中,因此感觉更像是 MDI 应用程序的一致部分。
private void openChildDialogToolStripMenuItem_Click(object sender, EventArgs e)
{
var childForm = new ChildForm
{
ShowInTaskbar = false,
MinimizeBox = false,
MaximizeBox = false
};
childForm.StartPosition = FormStartPosition.CenterParent;
childForm.ShowDialog(this);
}