左边放个treeview,右边是个panel。
左边每一项对一个窗体。
根据左边选择的项,panel加载相应的窗体。
ps:winform中panel可以将其它的窗体加载进来的。

解决方案 »

  1.   


    能写两行代码说一下panel怎么加载窗口么?
      

  2.   

    定义一个自定义控件,作为右边,用:
    panel.Controls.Clear();
    panel.Controls.Add(new UserControl1());
      

  3.   


    能写两行代码说一下panel怎么加载窗口么?            Form1 fm = new Form1();
                fm.TopLevel = false;
                fm.Show();
                panel1.Controls.Add(fm);
      

  4.   

    左边放 treeview 右边用panal 具体的按钮界面什么的么一用UserControl 
      

  5.   


    //用户自定义控件 using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Drawing; 
    using System.Data; 
    using System.Text; 
    using System.Windows.Forms; namespace MenuTest.UCcontrol 

    public partial class Menu : UserControl 

    public Menu() 

    InitializeComponent(); } 
    void CreateFirst() 

    mylistView.Items.Clear(); 
    mylistView.LargeImageList = imageListF; 
    mylistView.Items.Add("第一子菜单", 0); 
    mylistView.Items.Add("第二子菜单", 1); 

    void CreateSecond() 

    mylistView.Items.Clear(); 
    mylistView.LargeImageList = imageListS; 
    mylistView.Items.Add("第一子菜单", 0); 
    mylistView.Items.Add("第二子菜单", 1); 
    mylistView.Items.Add("第三子菜单", 2); 
    mylistView.Items.Add("第四子菜单", 3); 

    void CreateThree() 

    mylistView.Items.Clear(); 
    mylistView.LargeImageList = imageListT; 
    mylistView.Items.Add("第一子菜单", 0); 
    mylistView.Items.Add("第二子菜单", 1); 

    /// <summary> 
    /// 单击不同按钮 显示不同菜单 
    /// 原理:1 取到点击按钮 2 循环panel中的所有控件,如果是按钮 
    /// 再判断是否是点击的按钮,则设置其显示的位置 
    /// 3 别忘了所有控件显示在最前面 BringToFront()函数 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    void ButtonClick(object sender, System.EventArgs e) 

    //获取点击的按钮 
    Button clickedButton = (Button)sender; 
    // 取到tab索引 
    int clickedButtonTabIndex = clickedButton.TabIndex; //button显示的位置 最顶或者最底部 
    foreach (Control ctl in this.panel1.Controls) //取到panel1中的所有控件 

    if (ctl is Button) //如果是Button 

    Button btn = (Button)ctl; 
    //如果取到的Button的TabIndex大于点击按钮的TabIndex 
    //即循环到得按钮不是所点击的按钮 
    if (btn.TabIndex > clickedButtonTabIndex) 

    //如果循环到的按钮没有显示在底部 
    if (btn.Dock != DockStyle.Bottom) 

    //则让其显示在底部 
    btn.Dock = DockStyle.Bottom; 
    // 显示在最前 
    btn.BringToFront(); 


    else //循环到点击按钮 

    //没在顶部就显示在顶部 
    if (btn.Dock != DockStyle.Top) 

    btn.Dock = DockStyle.Top; 
    // 显示在最前 
    btn.BringToFront(); 



    } switch (clickedButton.Text) 

    case "第一项": 
    CreateFirst(); 
    break; case "第二项": 
    CreateSecond(); 
    break; case "第三项": 
    CreateThree(); 
    break; 

    mylistView.BringToFront(); 
    } //自定义自己的事件 
    public event EventHandler menu_listView1_SelectedIndexChanged; //在此触发自己的自定义事件 以备在主窗体中挂接该事件 
    private void listView1_SelectedIndexChanged(object sender, EventArgs e) 

    if (this.menu_listView1_SelectedIndexChanged != null) 
    menu_listView1_SelectedIndexChanged(sender, e); 
    } } 
    } ///////////////////////////////////////
    //主窗体 using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Text; 
    using System.Windows.Forms; namespace MenuTest 

    public partial class Form1 : Form 

    public Form1() 

    InitializeComponent(); 

    //实例化用户控件 
    UCcontrol.Menu menu = new UCcontrol.Menu(); 
    string Item; private void Form1_Load(object sender, EventArgs e) 

    this.Controls.Add(menu); 
    //挂接用户控件事件 
    this.menu.menu_listView1_SelectedIndexChanged += new EventHandler(menu_listView1_SelectedIndexChanged); 

    // 
    #region //测试用户定义控件 
    void Do() 

    MessageBox.Show("第一子菜单"); 

    // 
    void Do1() 

    MessageBox.Show("第二子菜单"); 
    } //根据不同的点击执行不同的事件 
    void Dosomething() 

    switch(Item) 

    case "第一子菜单": 
    Do(); 
    break; 
    case "第二子菜单": 
    Do1(); 
    break; 


    /// <summary> 
    /// 实现用户控件自定义事件 即自己定义的事件 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void menu_listView1_SelectedIndexChanged(object sender, EventArgs e) 
    { ListView listView = (ListView)sender; //取到发送事件的控件 
    if (listView.SelectedIndices.Count > 0) 

    Item = listView.SelectedItems[0].Text; 
    Dosomething(); 


    #endregion 


     
      

  6.   

    其实就是个MDI啊,百度搜“父窗体,子窗体”,全部都搞懂了