有两个窗体main 和child ,main中有一个文本框一个按钮。当点击main中的show按钮弹出child窗体。如何使child显示在main中文本框的下方(如:下图)?
我想用如下代码实现,但child显示位置总是不正确!main.cs
public partial class main : Form
    {
        public main()
        {
            InitializeComponent();
        }        private void simpleButton1_Click(object sender, EventArgs e)
        {
            child cd = new child();
            cd.showForm(textEdit1);
        }
    }child.cs
public partial class child : DevExpress.XtraEditors.XtraForm
    {
        public child()
        {
            InitializeComponent();
        }
        public void showForm(Control ctl)
        {
            this.Show();
            Point p1 = ctl.Location;
            Point p2 = ctl.PointToScreen(p1);
            this.Location = p2;        }
    }请各位帮帮忙?看看如何实现!

解决方案 »

  1.   

    child cd = new child();
    cd.StartPosition = FormStartPosition.Manual;
    cd.showForm(textEdit1);修改为
    child cd = new child();
    cd.StartPosition = FormStartPosition.Manual;
    cd.showForm(textEdit1);
      

  2.   

    没看到。你现实的也不对。
    显示的部分这样。Form child = new Form();
    child.StartPosition = FormStartPosition.Manual;
    child.Location = this.PointToScreen(new Point(textBox5.Left, textBox5.Top + textBox5.Height));
    child.Show();
    如果想嵌入窗体Form child = new Form();
    child.StartPosition = FormStartPosition.Manual;
    child.Location = new Point(textBox5.Left, textBox5.Top + textBox5.Height);
    child.Show();
    child.TopLevel = false;
    this.Controls.Add(child);
    child.BringToFront();
      

  3.   

    main.cs
    public partial class Main : Form
        {
            public Main()
            {
                InitializeComponent();
            }
            
            private void simpleButton1_Click(object sender, EventArgs e)
            {
                Child cd = new Child();
                cd.ShowChild(textEdit1);
            }
        }child.cspublic partial class Child : DevExpress.XtraEditors.XtraForm
        {
            private Form mainForm = null;
            public Child()
            {
                InitializeComponent();
            }
           
            public void ShowChild(Control ctl)
            {
                if (Application.OpenForms.Count > 0)
                {
                    mainForm = Application.OpenForms[0];
                }
                this.Show();
                
                  this.StartPosition = FormStartPosition.Manual;
                Point p = mainForm.PointToScreen(new Point(ctl.Left, ctl.Top + ctl.Height));
                this.Location = p;
               
            }
           
        }