我的程序是这样的,主form上一个splitContainer分为左右两边。左边方了一个treeView,右边空的。我点击一个button实现新form的实例化。
点击事件
            select s1 = new select();
            s1.Name = System.DateTime.Now.ToString();
            s1.Text = System.DateTime.Now.ToString();
            s1.TopLevel = false;
            
            this.splitContainer1.Panel2.Controls.Add(s1);
            s1.Parent = this.splitContainer1.Panel2;
            
            s1.TopMost = true;
            s1.Show();
            s1.Activate();
现在这段代码运行没有问题,可是在panel2中s1始终不能获得焦点。
我用splitContainer1的主要目的是可以调节两边区域的大小。请大虾帮我想想办法解决一下。(1、尽量获得焦点。2、使用其他容器也可以用户控制划分两边的大小。)
类似SQL的查询分析器的效果。

解决方案 »

  1.   

    this.splitContainer1.Panel2.Focuse();呢?
      

  2.   

    this.splitContainer1.Panel2.Focuse();没用,加载s1以后,他是灰色的。双击的瞬间获得了焦点,大小改变以后失去焦点。
      

  3.   

    看见好多人说s1.Focuse(),可是我放在代码的那个地方都没有用。还有s1的边框去掉了我怎么在多个s1中选择和切换?如果新创建的s1没有获得焦点那么下次创建的时候他会在同一位置创建s1,没有多文档效果(层叠效果)。
      

  4.   

    MessageBox.Show(s1.Focused.ToString());结果是false这个说明s1不能获得焦点?
      

  5.   

    楼主参考如下的代码自己来做一个"MDI"主窗体就可以解决你的问题了:
    public Form1()
    {
    InitializeComponent();
    initMdiclient();
    }private void initMdiclient()
    {
    Panel panelLeft = new Panel();
    this.Controls.Add(panelLeft);
    panelLeft.Dock = DockStyle.Left;
    panelLeft.Visible = true; MdiClient mdiClient = new MdiClient();
    this.Controls.Add(mdiClient);
    Form f = new Form();
    f.MdiParent = this;
    mdiClient.Controls.Add(f);
    f.Visible = true;}
      

  6.   

    楼上的方法是不是在主窗口构造的时候就已经构造了f?我是要在特定情况下点击button才实现form的构造和显示。能实现吗?
      

  7.   

    赞同hbxtlhx(平民百姓)
    你可以在button的click事件中加上
    Form f = new Form();
    f.MdiParent = this;
    mdiClient.Controls.Add(f);
    f.Visible = true;
      

  8.   

    呵呵,我只不过说了这一个实现的方法,杰主可以在任何需要的时候向MdiClient中添加要显示的窗体:)
      

  9.   

    我这么做的原因就是因为楼主做的不是一个MDI主窗体,但是又要做到像MDI来样来管理子窗体,所以用MdiClient控件正好可以灵活的来实现这个目的.
      

  10.   

    不对,我本身就是一个MDI窗口,窗口下有一个splitContainer1占用整个窗口。splitContainer1分为两个部分Panel1和Panel2,Panel1左边放入treeView,右边就是要放入窗体的。可是按照hbxtlhx(平民百姓) 的方法去实现还是没有获得焦点不能实现类似查询分析器的效果。如果我使用单一的Panel来实现就很简单,但是Panel1不能在用户界面下改变大小。我想解决的就是在Panel2下创建窗口获得焦点或者单一Panel能改变大小。
      

  11.   

    你要做成查询分析器的效果啊,这好说啊,你不要用splitContainer1这个控件,而是直接把TreeView控件加入Mdi主窗体,设置Dock为Left显示,再添加一个splitter,Dock也是设置为Left,这样运行程序试试看左边的子窗体是不是有焦点了,是不是像查询分析器了?记得不能用splitContainer1,把它去掉,直接加Treeview及splitter
      

  12.   

    问题出在VS2005默认控键中没有splitter汗。。