求助!!当form子窗体已经打开,并且不是位于最上层,也没有最小化,而是被最上层的窗体覆盖住了。当再次点击打开此窗体的按钮时,怎么让其显示在最上层?我现在再次点击打开时,没有反应。
例如:有两个form,分别是form1,form2,此时form1,form2都已经打开,并且form1位于form2的后面,被form2挡住,看不到了。我用button1控制form1的打开,现在再点击button1,form1不能显示在最上层,即当前画面还是form2的。前提是我有判断主窗体中若有form1,则窗体中不再打开form1。

解决方案 »

  1.   

    public void MakeOnTop()
    {
       myTopForm.TopMost = true;
    }
      

  2.   

    正常情况下,各位的方法都是可以的,但是我判断主窗体中若有form1,则主窗体中就不再打开form1。当点击控件时,这个form1就会到上层来。这样的话,同样的方法也可以吗?先谢谢各位了!!
      

  3.   

    楼主说的我明白,,我也做过,不过我现在这里没有代码,可以将窗体存着Tag属性
      

  4.   

    这个用过了,没看到效果啊。我前提是判断主窗体中若有form1,则主窗体中就不再打开form1了啊
      

  5.   

    public partial class Form1 : Form {
            public Form1() {
                InitializeComponent();
            }        private Form2 f2;//子窗体
            private Form3 f3;//子窗体        private void button1_Click(object sender, EventArgs e) {
                if (null == f2 || f2.IsDisposed) {
                    f2 = new Form2();
                    f2.Show();
                } else {
                    f2.Activate();
                }
            }        private void button2_Click(object sender, EventArgs e) {
                if (null == f3 || f3.IsDisposed) {
                    f3 = new Form3();
                    f3.Show();
                } else {
                    f3.Activate();
                }
            }
        }
      

  6.   

    这个对于直接的子窗体可以,对于调用.dll文件似乎不管用啊
      

  7.   

    if (null == f2 || f2.IsDisposed) {
      f2 = new Form2();
      f2.Show();
      } else {
      f2.Activate();
      }
    把这些代码封装在DLL中,等于在DLL中开放一个接口让你打开窗体。就是说某个窗体的打开由它所在的DLL进行管理
      

  8.   

    刚试了下,对于调用DLL文件一样管用。
      

  9.   

     private void toolStripButtons_Click(object sender, EventArgs e)
            {
                Form[] x = this.MdiChildren;//所有子窗体放入数组     
                Assembly assembly = Assembly.LoadFile(@"C:\Key\bin\Debug\" + sender.ToString().Replace(" ", "").Trim() + ".dll");
                Form form = null;
                form = assembly.CreateInstance("Key." + sender.ToString().Replace(" ", "").Trim()) as Form;
                form.Name = sender.ToString().Replace(" ", "").Trim();            for (int i = 0; i < x.Length; i++)
                { 
                    if (x[i].Name.Trim().Equals(sender.ToString().Replace(" ", "").Trim()))
                    {
                       return; 
                    }
                    if (i + 1 == x.Length)
                    {
                        this.IsMdiContainer = true;
                        form.MdiParent = this;
                        form.TopMost = true;
                        form.Show();                
                    }          
                }
                   if (x.Length == 0)
                  {
                    this.IsMdiContainer = true;
                    form.MdiParent = this;
                    form.TopMost = true;
                    form.Show();
                    //form.BringToFront(); 
                  }        }
      

  10.   

    assemblyFile=Application.StartupPath + "\\" + ds.Tables[0].Rows[0]["assemblyFile"].ToString();
    formName=ds.Tables[0].Rows[0]["formName"].ToString();            //单一加载窗体
                for (int i = 0; i < Application.OpenForms.Count; i++)
                {
                    if (Application.OpenForms[i].GetType().ToString() == formName)
                    {
                        Application.OpenForms[i].Activate();
                        return;
                    }
                }