我使用了dockPanel1控件,但是我现在想实现点击tree其中的一个节点,如何在右侧显示自己要想要的串口

解决方案 »

  1.   

    这个方法应该很多吧,例如你在创建TreeView时候就可以对TreeNode的Tag赋值,用于标记不同的窗体引用,然后用TreeView的Click事件就可以做到了。
      

  2.   


    你是开发CS架构的程序吧?
    你最好把dockPanel控件的功能封装到用户控件里。
    再单击左侧树节点的时候,根据不同节点显示不同的用户控件。
    这样做可以减少主窗体的代码量。
    维护起来会相对容易很多。
      

  3.   

    是啊,就是楼上的意思
    为什么这样不行
            private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (treeView1.SelectedNode.Name.ToString() == "节点5")
                {
                    Form2 form2 = new Form2();
                    mainform mainform = new mainform();
                    form2.Show(mainform.dockPanel1);
                    form2.ShowHint = DockState.Document;
                }
            }
      

  4.   

    求在DockPanel 的子窗体用命令打开另一子窗体使其停靠在主窗体的方法谁能帮我实现啊
      

  5.   

    DockPanel是指:WeifenLuo.WinFormsUI.Docking.dll里的那个吗?如果是,请继续看:
    1。首先你要在主窗体右侧显示的窗体要继承DockContent
    2。还有一点让我费解,你这个treeview2是在哪个窗体上? 
    Form2 form2 = new Form2();
                    mainform mainform = new mainform();//这里为什么又重新创建?
                    form2.Show(mainform.dockPanel1);//主窗体还没显示出来form2又如何显示?
                    form2.ShowHint = DockState.Document;
    现在对你的具体情况不清楚。
      

  6.   


    你的主要问题出现在  mainform mainform = new mainform();//这里为什么又重新创建?
    这里是不能重新new一个的,不然你的子窗体会显示到你刚new的这个主窗体上,而我想你的整个应用程序来说主窗体应该只有一个,第一个子窗体也是通过主窗体打开的,所以你在第一个子窗体上想使另一个子窗体显示到同一个主窗体上的时候,你必须先拿到主窗体,你可以通过单例模式或是之前先保存主窗体引用。
      

  7.   

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (treeView1.SelectedNode.Name.ToString() == "节点5")
                {
                    Form2 form2 = new Form2();
                    mainform mainform = new mainform();
                    form2.Show(mainform.dockPanel1);
                    form2.ShowHint = DockState.Document;
                }
            }
    改成
    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (treeView1.SelectedNode.Name.ToString() == "节点5")
                {
                    Form2 form2 = new Form2();
                    mainform mainfrm = (mainform)this.owner;//这里的this应该会指向treeview所在的窗体,如果确实是这样,还不行的话,那么在treeview所在窗体显示前显式设置该窗体的Owner=mainform
                    form2.Show(mainfrm.dockPanel1);
                    form2.ShowHint = DockState.Document;
                }
            }
      

  8.   

    谢谢楼上的,我还是在说明一下我的意思
    三个form,mainform ,form1,form2
    其中mainform中这样写,然后from1能显示,form1的位置是在dockPanel1的左侧
            public void mainform_Load(object sender, EventArgs e)
            {
                Form1 form1 = new Form1();
                form1.Show(dockPanel1);
            }
    然后我点击form1中的treeView1的一个节点,form2显示在dockPanel1的中间,就是这样
      

  9.   

    mainform mainfrm = (mainform)this.owner出问题了,owner没有定义
      

  10.   

     mainform mainfrm = (mainform)this.owner;//这里的this应该会指向treeview所在的窗体,如果确实是这样,还不行的话,那么在treeview所在窗体显示前显式设置该窗体的Owner=mainform这个你没做。如果真的不行。QQ:66970551
    我现在就写个示例给你看一下。