禁止mdi子窗体重复打开的问题求助。以下这个函数,是用于判断子窗体是否打开的,但是我使用时,不知道第一个参数如何传。
第二个参数是一个字符串,传入子窗体的名称就行了。但是第一个参数是 Form,我应该如何传值呢?比如说,我在父窗体的菜单中写代码,调用子窗体,我应该如何写呢?
请给句示例代码,谢谢了。
        private bool HaveOpened(Form frmParent, string frmChild)
        {
            //查看窗口是否已经被打开
            bool bReturn = true;    //默认值表示需要打开
            for (int i = 0; i < frmParent.MdiChildren.Length; i++)
            {
                if (frmParent.MdiChildren[i].Name == frmChild)
                {
                    frmParent.MdiChildren[i].BringToFront();
                    bReturn = false;    //表示不需要打开
                    break;
                }
            }
            return bReturn;
        }

解决方案 »

  1.   

    第一个参数传:this,或this.MdiParent。这要看你在哪里调用
      

  2.   

    Form frmParent,就是父窗体的实例啊
      

  3.   

     AddTempleteForm form = new AddTempleteForm();
                for (int i = 0; i < this.MdiChildren.Length; i++)
                {
                    try
                    {
                        if ((this.MdiChildren[i] as Form).GetType().Equals(form.GetType()))
                        {
                            this.MdiChildren[i].Focus();
                            return;
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                form.MdiParent = this;
                form.Show();这样就Ok了
      

  4.   

    哈哈,我自己给自己做了一个小工具(电脑英语字典)。嘿嘿见图参考,现在词汇量在不断添加中,等我觉得词汇量比较多了,
    就放到CSDN上让大家下载
      

  5.   

    用这个接口去判断有没有你这个窗口对象 IDictionary<Key,Value>
    没有就打开相反就不要打开
      

  6.   


    我是问,如何调用这个函数的话,参数如何写呢?Form frmParent 这是形参。
    我想知道对应的实参如何写?
      

  7.   


    FORM2:
            public static Form2 frm = new Form2();
            public static void ShowForm()
            {
                frm.Show();
                frm.Focus();
            }        private Form2()
            {
                InitializeComponent();
            }FORM1:
      private void Button_Click(object sender, RoutedEventArgs e)
            {
                Form2.ShowForm();
            }