返回首页

你好,我是乌代satardekar,

CSHARP WINFORM中的MDI应用程序在我有5子窗体。

我想只有一个每个子窗体的形式后,点击。

哪个对我的工作的正确。我已经实现了使用静态计数器。


当用户点击下一步打开每个子窗体后,我想在前面点击的实例。


我的代码是这样的:

private void retriveDataToolStripMenuItem_Click_1(object sender, EventArgs e)

        {

            int instances = RetriveDataForm.instanceCount;

            if (instances < 1)

            {

                RetriveDataForm retrieveDataForm = new RetriveDataForm();

                retrieveDataForm.MdiParent = this;

                retrieveDataForm.Show();

            }

 

        }

 

        private void manualEntryToolStripMenuItem1_Click(object sender, EventArgs e)

        {

             int instances = ManualEntryForm.instanceCount;

             if (instances < 1)

             {

                 ManualEntryForm manualEntry = new ManualEntryForm();

                 manualEntry.MdiParent = this;

                 manualEntry.Show();

             }

        }
假设retrieveDataForm和manualEntry已经打开,当用户点击上manualEntry形式下的时间,我想它前面的所有打开的窗体。

我有使用manualEntry.BringToFront();在else块不工作
请给我的解决方案。

回答

评论会员:西蒙邦Terkildsen 时间:2012/02/04
OK,下面的代码应该为你工作,假设ManualEntryForm是你的形式之一的名称和代码被放置在MDI父。我不知道怎么回事,我可以帮助。


foreach (Form child in MdiChildren)

{

    if (child is ManualEntryForm)

    {

        child.Activate();

        break;

    }

}

if (!(this.ActiveMdiChild is ManualEntryForm ))

{

    ManualEntryForm form = new ManualEntryForm { MdiParent = this };

    form.Show();

    form.Focus();

}

评论会员:udusat13 时间:2012/02/04
对此,
use manualEntry.Activate();

 

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.activate.aspx[^]
我已经使用类似这样的

{体C3} 但它不能正常工作
请给我的解决方案
感谢
评论会员:游客 时间:2012/02/04
约翰・西蒙斯/取缔程序员:你不需要算什么。只是列举现有的开放形式,如果你找到manualEntry,调用它的Activate方法。否则,创建它。{的C4}
西蒙邦Terkildsen:我认为约翰意味着mainForm.MdiChildren
评论会员:西蒙邦Terkildsen 时间:2012/02/04
使用manualEntry.Activate()

]