none
求助,这种效果是怎么做的啊。没看懂 RRS feed

  • 问题

  • http://images.cnblogs.com/cnblogs_com/sufei/tabcontrol1.jpg

    大家好,他这张图,点击treeview就出新产生选项卡,就会有新的内容出现,这个新的内容,可不可以是一个窗体。。或者朋友们告诉下我这是怎么实现的,谢谢


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年12月18日 15:34

答案

  • dear
    这样的东西是用
    splitContainer + TreeView + Panel组合变化而成

    在小弟的blog里有类似的东西,您可参考看看。

    http://www.dotblogs.com.tw/yc421206/archive/2009/07/28/9701.aspx

    若你要显示窗体,把窗体Show()出来就好了啊

    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月18日 16:09
  • 可以采取这样的方法,点击TREEVIEW时动态生成tabcontrol的选项卡,然后把窗体添加到生成的选项卡中,

    我写了一个DEMO,你看看

    demo下载:http://blog.csdn.net/zx13525079024/archive/2010/12/19/6084733.aspx

     public partial class Form5 : Form
     {
      public Form5()
      {
       InitializeComponent();
      }
    
      private void Form5_Load(object sender, EventArgs e)
      {
       TreeNode root = new TreeNode("电话缴费");
       root.Name = "root";
       treeView1.Nodes.Add(root);
    
       TreeNode tnMobile = new TreeNode("中国移动");
       tnMobile.Name = "mobile";
       root.Nodes.Add(tnMobile);
    
       TreeNode tnUnion = new TreeNode("中国联通");
       tnUnion.Name = "union";
       root.Nodes.Add(tnUnion);
       root.Expand();
    
       
    
      }
    
      
    
      private TabPage tbMobile = null;
      private TabPage tbUnion = null;
      private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
      {
       
       if (treeView1.SelectedNode.Name=="mobile")
       {
        
        if (ErgodicModiForm("tbmobile", tabControl1))
        {
          tbMobile = new TabPage("中国移动");
    
         tbMobile.Name = "tbmobile";
         tabControl1.Controls.Add(tbMobile);
    
         Form6 form = new Form6();
         form.TopLevel = false;
         form.BackColor = Color.White;
         form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
    
         form.FormBorderStyle = FormBorderStyle.None;
         form.Show();
         tbMobile.Controls.Add(form);
    
    
        }
    
    
        tabControl1.SelectedTab = tbMobile;
       }
       else if (treeView1.SelectedNode.Name=="union")
       {
    
        if (ErgodicModiForm("tbunion", tabControl1))
        {
         tbUnion = new TabPage("中国联通");
         tbUnion.Name = "tbunion";
         tabControl1.Controls.Add(tbUnion);
    
         Form2 form = new Form2();
         form.TopLevel = false;
         form.BackColor = Color.White;
         form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
    
         form.FormBorderStyle = FormBorderStyle.None;
         form.Show();
         tbUnion.Controls.Add(form);
    
    
         
        }
        tabControl1.SelectedTab = tbUnion;
       }
      }
    
      /// </summary>
      /// <param name="MainTabControlKey">选项卡的键值</param>
      /// <param name="objTabControl">要添加到的TabControl对象</param>
      /// <returns></returns>
      private Boolean ErgodicModiForm(string MainTabControlKey, TabControl objTabControl)
      {
       //遍历选项卡判断是否存在该子窗体
       foreach (Control con in objTabControl.Controls)
       {
        TabPage tab = (TabPage)con;
        if (tab.Name == MainTabControlKey)
        {
         return false;//存在
        }
       }
       return true;//不存在
      }
     }
    

    http://blog.csdn.net/zx13525079024
    2010年12月18日 16:55

全部回复

  • dear
    这样的东西是用
    splitContainer + TreeView + Panel组合变化而成

    在小弟的blog里有类似的东西,您可参考看看。

    http://www.dotblogs.com.tw/yc421206/archive/2009/07/28/9701.aspx

    若你要显示窗体,把窗体Show()出来就好了啊

    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月18日 16:09
  • 可以采取这样的方法,点击TREEVIEW时动态生成tabcontrol的选项卡,然后把窗体添加到生成的选项卡中,

    我写了一个DEMO,你看看

    demo下载:http://blog.csdn.net/zx13525079024/archive/2010/12/19/6084733.aspx

     public partial class Form5 : Form
     {
      public Form5()
      {
       InitializeComponent();
      }
    
      private void Form5_Load(object sender, EventArgs e)
      {
       TreeNode root = new TreeNode("电话缴费");
       root.Name = "root";
       treeView1.Nodes.Add(root);
    
       TreeNode tnMobile = new TreeNode("中国移动");
       tnMobile.Name = "mobile";
       root.Nodes.Add(tnMobile);
    
       TreeNode tnUnion = new TreeNode("中国联通");
       tnUnion.Name = "union";
       root.Nodes.Add(tnUnion);
       root.Expand();
    
       
    
      }
    
      
    
      private TabPage tbMobile = null;
      private TabPage tbUnion = null;
      private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
      {
       
       if (treeView1.SelectedNode.Name=="mobile")
       {
        
        if (ErgodicModiForm("tbmobile", tabControl1))
        {
          tbMobile = new TabPage("中国移动");
    
         tbMobile.Name = "tbmobile";
         tabControl1.Controls.Add(tbMobile);
    
         Form6 form = new Form6();
         form.TopLevel = false;
         form.BackColor = Color.White;
         form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
    
         form.FormBorderStyle = FormBorderStyle.None;
         form.Show();
         tbMobile.Controls.Add(form);
    
    
        }
    
    
        tabControl1.SelectedTab = tbMobile;
       }
       else if (treeView1.SelectedNode.Name=="union")
       {
    
        if (ErgodicModiForm("tbunion", tabControl1))
        {
         tbUnion = new TabPage("中国联通");
         tbUnion.Name = "tbunion";
         tabControl1.Controls.Add(tbUnion);
    
         Form2 form = new Form2();
         form.TopLevel = false;
         form.BackColor = Color.White;
         form.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
    
         form.FormBorderStyle = FormBorderStyle.None;
         form.Show();
         tbUnion.Controls.Add(form);
    
    
         
        }
        tabControl1.SelectedTab = tbUnion;
       }
      }
    
      /// </summary>
      /// <param name="MainTabControlKey">选项卡的键值</param>
      /// <param name="objTabControl">要添加到的TabControl对象</param>
      /// <returns></returns>
      private Boolean ErgodicModiForm(string MainTabControlKey, TabControl objTabControl)
      {
       //遍历选项卡判断是否存在该子窗体
       foreach (Control con in objTabControl.Controls)
       {
        TabPage tab = (TabPage)con;
        if (tab.Name == MainTabControlKey)
        {
         return false;//存在
        }
       }
       return true;//不存在
      }
     }
    

    http://blog.csdn.net/zx13525079024
    2010年12月18日 16:55