C#winform如何实现动态界面显示,能不能替换form里的panel呢?能的话如何替换Form里的panel呢?我不想close后再new一个新的form,因为我的菜单用treeview做的,想在同一个Form下,这边点击treeview,另一边就能显示各种信息,比如文本、表格、和其他组件构成的复杂的界面,下面上图

解决方案 »

  1.   

    简单地可以把panel都放上来,然后靠设置Visible来切换。如果想进一步的,可以动态加载,将每个页面制作成用户控件,然后用Panel.Controls.Add(new YourControl()) 加进来。
      

  2.   

    用visible的话 还要占有内存,而且子节点多的话,会全部都打开,感觉很不专业……那个用动态加载把页面制作成用户控件的具体方法 能不能给个网址学学,或者再给我讲讲。。给个demo就更好了!新人刚开接触C#,麻烦了!
      

  3.   

    用的时候直接把控件new 出来指定location属性和size属性,再show出来,不用的时候就dispose它
      

  4.   

    具体可以参考一下代码设计器(.designer.cs)的代码,不会的可以问我
      

  5.   

    可以在节点选择事件的时候修改panel显示的值。
      

  6.   

    可以,方法就用2L说的Panel.Controls.Add(new YourControl()) 
    具体的话,你可以看下DevExpress DXperience 控件winform的demo
    它全是用这种方式实现的。
      

  7.   


    //一个节点就是form,点节点显示对应窗体到panel里面,把form当作控件
                stductForm form = new stductForm();
                form.TopLevel = false;
                panel1.Controls.Add(form);
                form.Show();
      

  8.   

    点击节点添加窗体之前判断panle是否有窗体,有,则先移除再添加。
      

  9.   

    右边弄一个 datagridview  
    根据左边节点,结合sql语句,给 datagridview 控件绑定数据就是了
    当然时只时显示数据时,可以这么做,
    如果要维护数据这些,要点心思
      

  10.   

    右边设置一个 TABCONTROL 然后把TB的列头隐藏。切换标签
      

  11.   


    这个是可以的。推荐你用 MDIForm
      

  12.   

    先在FORM里创建好你的控件,然后去.designer.cs里看生成了哪些代码,然后把这些代码挪到你TREE的响应函数里就OK了,有几部分:控件的声明;控件的实例化;控件参数的指定;最后在Control里Add。
      

  13.   

    还有,动了.designer.cs里的代码,动态生成控件后,vs的设计界面就不能用了,不过不影响程序编译。