今天做了一個winfrom 程序
一個父窗体,2个子窗体
子窗体在父窗体中显示
父窗体有个toolstrip
toolstrip 中有两个按钮,分别对应两个子窗体
怎么点击一个子窗体后让他前一个子窗体关闭,并且新出现的子窗体的位置和上个子窗体一样
新手...能具体点最好..
谢谢各位大侠

解决方案 »

  1.   

    比如你在打开窗体1的时候会
    frm1 = new frm1();
    这时候你就有frm1对象。如果你要打开窗体2那么你可以直接使用frm1关闭。在关闭之前获取frm1的位置,在打开2的之后调用2的设置位置函数这样OK了
    大致这样
      

  2.   

     [DllImport("User32.dll", EntryPoint = "FindWindow")]
      private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
      [DllImport("User32.dll")]
      private static extern bool ClientToScreen(IntPtr hwnd, ref Point lpPoint);         IntPtr findPtr = FindWindow(null, "frm1");  Point p = new Point (0);
      ClientToScreen(findPtr, ref p);
    根据这p设置2的位置frm2.SetDesktopLocation(p.x,p.y);
      

  3.   

    lz的情况可以考虑使用MDI窗体
      

  4.   


    FORM1:
            private Point m_Point = new Point(0, 0);
            private void MoveForm(Point p)
            {
                m_Point = p;
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                frm.MoveEvent += MoveForm;
                frm.Show();
                frm.Top = m_Point.X;
                frm.Left = m_Point.Y;
            }        private void button2_Click(object sender, EventArgs e)
            {
                Form3 frm = new Form3();
                frm.MoveEvent += MoveForm;
                frm.Show();
                frm.Top = m_Point.X;
                frm.Left = m_Point.Y;
            }FORM2和FORM3是一样的
            public delegate void MoveDelegate(Point p);
            public event MoveDelegate MoveEvent;        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
            {
                if (MoveEvent != null)
                {
                    MoveEvent(new Point(this.Top, this.Left));
                }
            }
      

  5.   

    我就是用的MDI窗体啊..
      有点迷糊了..
      

  6.   

    Form[] f = this.OwnedForms;foreach (Form f1 in f)
        {
         if (f1 is Form1)
            {  f1.Close();/记录位置Location }
        }
        Form2 fm = new Form2();
        fm.Show(this);
      

  7.   

    关闭之前 要记录要关闭 窗体的 坐标 就是 location属性 的x 和 y  值
    之后 new form2 时候 
    给form2.location.x= form1.location.x
       form2.location.Y= form1.location.Y
    这样就行;额