日期:2014-05-20  浏览次数:22309 次

在C#中如何实现点击左边的treeview的节点,右边显示相应的界面?
在C#中如何实现点击左边的treeview的节点,右边显示相应的界面?

右边的界面应该用什么东西做呢?

很多人说用panel,可是如果节点很多的话,那不是会有很多panel?

我本意是想,每个节点的界面都是单独的winform,然后加载到右边的panel里面,可是运行之后根本不显示加载的窗体啊。

请高手帮忙。。

------解决方案--------------------
用父窗口来做。
------解决方案--------------------
探讨
在C#中如何实现点击左边的treeview的节点,右边显示相应的界面?

右边的界面应该用什么东西做呢?

很多人说用panel,可是如果节点很多的话,那不是会有很多panel?


------解决方案--------------------
不显示,是因为你没有调用窗体的Show方法:
C# code

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Name == "节点0")
            {
                SettingForm1 stfrm1 = new SettingForm1();
                stfrm1.TopLevel = false;
                stfrm1.FormBorderStyle = FormBorderStyle.None;
                stfrm1.WindowState = FormWindowState.Maximized;
                panel1.Controls.Add(stfrm1);
                stfrm1.Show();
            }
        }

------解决方案--------------------
我做过,就用panel,所有的窗口都在panel中切换
C# code

Form1 form1 = new Form1
form1.TopLevel = false;
panel1.Controls.Add(form1);
form1.Show();

------解决方案--------------------
跟TreeView放在哪里没有关系的,关键是你不能用splitContainer1.Panel2.Controls.Add(stfrm1);
必须在splitContainer1.Panel2上放一个独立的Panel才行!

splitContainer1.Panel2的类型是:SplitterPanel不是Panel!

------解决方案--------------------
为什么每个界面都要用Form弹出呢,只用一个Form不行吗?
Form的左边是TreeView,右边是Panel,而把每个界面定义一个UserControl,TreeView节点点击之后,动态设置UserControl到Panel不就完了。弹那么多Form用户体验很差的,所有的东西在一个Form当中搞定。
------解决方案--------------------
我的意思是你不要在Panel里面加载form,而是加载一个userControl,将form当中的逻辑移动到userControl当中。将一个form加到一个penel当中,这不符合微软的设计规范。
------解决方案--------------------
用webBrowser.Navigate(url);
url是你treeview被选中节点的属性值

TreeNode tn = this.treeView1.SelectedNode;
string url = "";
if (tn.Tag != null)
{
url = tn.Tag.ToString();
webBrowser1.Navigate(url);
}
Tag存储url
------解决方案--------------------
不知道我做的是不是你想要的,比较粗糙,欢迎拍砖。

C# code
 
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  static class Program
  {
    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new MainForm());
    }
  }
  class MainForm:Form
  {
    private TreeView treeView1;
    private Panel panel1;

    public MainForm()
    {
      this.InitializeComponent();

      LoginInDialog login = new LoginInDialog();
      this.treeView1.Nodes[0].Tag = login;

      WelcomeDialog welcome = new WelcomeDialog();
      this.treeView1.Nodes[1].Tag = welcome;
    }
 
    private void InitializeComponent()
    {