C# 通过单击标题栏禁用激活时的mdi子对象

C# 通过单击标题栏禁用激活时的mdi子对象,c#,mdi,C#,Mdi,我有一个MDI表单,可以打开多个子窗口。我注意到,如果我单击不是活动mdi子窗体的子窗体的标题栏,该子窗体将被激活并最大化。当我在标题栏以外的位置单击未激活的子对象时,不会发生此行为。在这种情况下,如何禁用最大化?我仍然希望能够使用标题栏上的最大化按钮最大化表单。当双击标题栏(而不是单击一次)时,能够最大化表单也很好。 我发现这一常规是造成问题的原因,但不确定是如何造成的。每当调用mdi子级的激活事件时,都会调用此方法。此特定语句导致问题:“if(dv.Disk.IsOS9)” private

我有一个MDI表单,可以打开多个子窗口。我注意到,如果我单击不是活动mdi子窗体的子窗体的标题栏,该子窗体将被激活并最大化。当我在标题栏以外的位置单击未激活的子对象时,不会发生此行为。在这种情况下,如何禁用最大化?我仍然希望能够使用标题栏上的最大化按钮最大化表单。当双击标题栏(而不是单击一次)时,能够最大化表单也很好。 我发现这一常规是造成问题的原因,但不确定是如何造成的。每当调用mdi子级的激活事件时,都会调用此方法。此特定语句导致问题:“if(dv.Disk.IsOS9)”

private void UpdateDiskMenu()
{
if(this.ActiveMdiChild==null)
{
diskToolStripMenuItem.Enabled=false;
}
其他的
{
diskToolStripMenuItem.Enabled=true;
DiskViewer dv=(DiskViewer)this.ActiveMdiChild;
if(dv.Disk.IsOS9)//0)
//bootstrapToolStripMenuItem.Enabled=true;
//否则
//bootstrapToolStripMenuItem.Enabled=false;
}
}
}

我尝试使用可重写的WndProc方法捕获它,但最大化发生在WndProc激发之前。这是不正常的。仅当前一个子项最大化时,子项才最大化。但如果是这样的话,你就不能点击它。双击当然会最大化,您可能会提到这一点。唯一合乎逻辑的解释是,这是由您的代码完成的。写这种代码很常见,也许不是你写的?是的,我写的代码。但是在我的代码中没有任何地方我设置它来最大化任何形式。如果我单步执行例程,问题就不会发生。它只在正常运行时发生,特别是在调用dv.Disk的IsOS9属性时。该属性只是运行一个验证dv.Disk数据的方法。该方法与任何windows窗体都完全无关。
    private void UpdateDiskMenu()
    {
        if (this.ActiveMdiChild == null)
        {
            diskToolStripMenuItem.Enabled = false;
        }
        else
        {
            diskToolStripMenuItem.Enabled = true;
            DiskViewer dv = (DiskViewer)this.ActiveMdiChild;

            if (dv.Disk.IsOS9) // <----- Problem occurs here.
            {
                //if (((OS9Format)dv.Disk).BootstrapLSN > 0)
                //    bootstrapToolStripMenuItem.Enabled = true;
                //else
                //    bootstrapToolStripMenuItem.Enabled = false;
            }
        }
    }