请教一下splitContainer的使用问题:
首先,我把From1的属性IsMdiContainer属性设成True,然后放一个splitContainer,其中Panel1是一些按钮,Panel2就放左边按钮点开的窗口。如图
左边按钮打开窗口的事件是这样写的            frm = new AddFrom();
            frm.MdiParent = this;
            frm.Parent = splitContainer1.Panel2;
            frm.Show();现在就有两个问题:
1、AddFrom打开后,窗口里的textBox的光标始终是在最后面,例如,我输入ABCD后我在B后面点击一下鼠标想删掉AB是点不了的,光标始终在最后面。
然后如果我把            frm = new AddFrom();
            //frm.MdiParent = this;
            //frm.Parent = splitContainer1.Panel2;
            frm.Show();
 这两行注释掉的话那么这个问题就不存在了;
2、我打开多个窗口的时候,新打开的窗口总是显示在最底层,即我先打开A窗口,然后再打开B窗口,那么B窗口总是会显示在A窗口后面,而不是B窗口显示在A窗口前面。
谢谢!splitContainer鼠标定位问题多窗口显示顺序问题c#

解决方案 »

  1.   

    1、界面和代码里没看到textbox。没法解答。
    2、b在显示的时候可以先调用panel2.removecontrols()
      

  2.   

    MDI子窗口应该以MDI容器作为父窗口,用panel作父窗口就会丧失MDI窗口的一些特性,比如层叠、平铺等。
    把SplitContainer换成Splitter控件,只留左边的panel放按钮,右边空出来作为MDI容器(灰色背景),这样就可以在里面添加MDI子窗口了。看下面的例子: public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent(); this.IsMdiContainer = true;
    var panel = new Panel {Dock = DockStyle.Left}; // left pannel
    var btn = new Button() { Text = "添加mdi子窗口", Location = new Point(10,20), Width = 100};
    btn.Click += button1_Click;
    panel.Controls.Add(btn);
    var splitter = new Splitter() { Width = 10, BackColor = Color.Gray};
    this.Controls.AddRange(new Control[] { splitter, panel });
    } private void button1_Click(object sender, EventArgs e)
    {
    var frm = new Form();
    frm.MdiParent = this;
    var textbox = new TextBox();
    frm.Controls.Add(textbox);
    //frm.BringToFront();
    frm.Show();
    }
    }如果用工具栏拖控件的话,先拖一个panel,设成dock=left,再拖一个splitter,放在右边(它会自动贴到panel的边上)。
      

  3.   

    1、界面如下图,代码就是打开这个窗口的事件,其他没有了frm = new AddFrom();
                frm.MdiParent = this;
                frm.Parent = splitContainer1.Panel2;
                frm.Show();2、没有找到你说的panel2.removecontrols()方法