C# 如何在子窗体处于活动状态时禁用父窗体
我是C#的一名新生,正在使用Microsoft Visual C#2013 我的目标是C# 如何在子窗体处于活动状态时禁用父窗体,c#,C#,我是C#的一名新生,正在使用Microsoft Visual C#2013 我的目标是 在其父窗体内打开子窗体 当子窗体处于活动/打开状态时,禁用父窗体 在VB.net中使用 frmStuDetails.ShowDialog() 我试过了 一, 结果…但问题是子窗体没有在父窗体/容器中打开 二,。 在MDI下的父调用按钮 frmViewStuList childForm = new frmViewStuList(this); childForm.Owner = this; childForm.
frmStuDetails.ShowDialog()
我试过了
一,
结果…但问题是子窗体没有在父窗体/容器中打开
二,。
在MDI下的父调用按钮
frmViewStuList childForm = new frmViewStuList(this);
childForm.Owner = this;
childForm.Show();
在childForm\u下激活
if (this.Owner != null)
{
this.Owner.Enabled = false;
}
在childForm\u下停用
if (this.Owner != null)
{
this.Owner.Enabled = true;
}
结果…它使子窗体处于活动状态,但在子窗体关闭时冻结父窗体
三,
结果…这似乎是最好的选择,但子窗体不会在父窗体中打开
如果你有其他想法,请帮忙
谢谢禁用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);
}
谢谢你的意见,我有一个工作围绕它
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;
}
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);
}