使用C#开发windows窗体应用。遇到如下问题:整个大窗口被分割成左右两个部分。左侧为菜单,右侧为功能区。
希望用户点击左侧菜单后,右侧功能区显示具体的、各种不同功能。右侧窗体内容十分复杂,可能由多人协同完成。请问在这种情况下,应使用什么样的方式开发?右侧窗体的数量可能有20-30个。我试用不了splitContainer和TableLayoutPanel,发现都不太对劲。应该怎么办?

解决方案 »

  1.   

    splitContainer有什么不对劲的,可以使用!只不过控件是分别应放到splitContainer的两个Panel中。
      

  2.   

    使用Splitter和SplitContainer都一样,当左侧菜单被点击时,把窗体加载过来就行了。右侧的窗体可以自定义一
    个基类窗体,设置基类窗体的边框加为none,并设置TopLevel属性为false,之后的所有窗体都继承它,这样就可以
    很方便地使用,多人并行开发也没有问题。
      

  3.   

    恍然大悟!Form2 frm2 = new Form2();
    frm2.TopLevel = false;
    splitContainer1.Panel2.Controls.Add(frm2);
    frm2.Show();To Gulang:
    你是指这样使用吗?
    现在我已经可以加载form2了。但有一点不放心的是:在form2不使用或变成其它窗体(如form3时),需要消毁它吗,还是直接add frm3就可以了。
    以前是做MFC的,对C#不太熟悉,谢谢大家!
      

  4.   

    建议将右边显示的窗体实例赋值给左边对应的菜单项——因为菜单项有一个Tag属性可以存储。然后处理左边菜单项单击事件的时候将Tag显示在右边就好了。隐藏先前一个窗体的方法也很简单。定义一个Form active;每次显示一个窗体都先把active.Visible = false;然后把新现实的窗体赋给active。当然,进一步的优化还可以做,例如delay initialize右边的窗体实例,做到只生成点击过的实例。慢慢体会吧,做起来不是那么困难。另外,我一般不用Form,喜欢用UserControl。
      

  5.   

    建议分层多个程序集,主程序调用个子程序集的dll,然后根据xml配置文件来动态调用不同的form显示。相当于IOC!!
      

  6.   

    我已经实现了,思路也是把程序开发的框架搭合理一点.
    splitContainer把程序分成左右两部分
    左边放treeview,右边load 窗体.右边的panel要加上一个工具条,在动态加窗体时在工具条上加按钮,这样就有标签效果了.
    主程序的treeview及,工具条都共用菜单的功能映是射.
    窗体不是第一次加载,则用form.show()form.hide,工具条用toolStrip.item.add和toolStrip.Items.RemoveAt(i),来控制.
    我这用了不少时间摸出来的,希望对你有帮助.