C#标签的制作:多标签的实现

开发 后端
WebBrowser控件的常用方法、属性和事件这篇文章说了浏览器核心的制作,这一篇说C#标签:多标签的实现。

.Net Framework 内置的TabControl容器提供了多标签的界面,自动封装了标签的新建、删除、切换等功能,但是这个控件实在长得难看,所以这里介绍自己制作标签的方法。

首先是用什么控件来做标签,一开始我用Label,但是Label很难看,所以就改用Button。

然后用一个Panel容器来做标签栏,也就是说它是所有标签的父容器。

C#标签的新建:

  1. Button btn1=new Button();  
  2.  
  3. btn1.Width=150;  
  4.  
  5. btn1.Dock=DockStyle.Left;  
  6.  
  7. panel2.Controls.Add(btn1); 

这里只设定了宽度,而它的位置、高度都不用设,因为在这里用到了btn1.Dock=DockStyle.Left,这样标签就始终会停靠在panel2的左侧,标签的top就是0,height就是panel2的高度。如果你想要自定义top和height怎么办?可以设一下panel2的Padding属性,比如设为(0,0,5,5),则标签的top就是5,bottom就是panel2的高度-5,width就是panel2的高度-10。

那么,标签的left是多少?因为每一个标签的Dock都是Left,所以标签会自动按顺序从左到右排列,如果中途删除了某个标签,它右边的标签就会自动过来补充,如果插入新的标签,则它会自动挤开右边的标签,这就是Dock属性的好处。

标签按什么顺序排列?按Zorder,即控件显示的前后顺序,如果两个控件有重叠区域,则Zorder较高的控件会遮住另一个。通常后添加的控件Zorder较高。你可以用Control.BringToFront,或Control.SentToBack方法使一个控件处于Zorder的最前面或***面。对于Dock在左边的控件,Zorder高的控件在Zorder低的控件的右边。

每一个标签都会对应一个WebBrowser控件,在新建标签的同时也会新建一个WebBrowser,我们用一个panel3来显示WebBrowser。

  1. WebBrowser wb1=new WebBrowser();  
  2.  
  3. wb1.Dock=DockStyle.Fill;  
  4.  
  5. panel3.Controls.Add(wb1); 

这样wb1自动充满整个panel3。

C#标签的切换:

假设原来激活标签的是btn1,现在点击了btn2,两个标签对应的WebBrowser为wb1,wb2,则

  1. panel3.Controls.Add(wb2);  
  2.  
  3. panel3.Controls.Remove(wb1); 

就可切换标签。

关键是如何将每个标签与WebBrower绑定,可以使用标签的Tag属性,也可以建立一个标签数组和WebBrower数组,使其中同位置的元素一一对就,两种方法都可以。

C#标签的关闭:

移除标签     panel2.Controls.Remove(btn1);

然后要从panel3移除标签所代表的WebBrowser,同时关闭标签后还要记得激活其它的标签。

***还要调用WebBrowser.Dispose();以释放它占用的资源。

在标签上显示网页的标题:

可以在WebBrowser的DocumentTitleChanged事件中,用btn1.Text=((WebBrowser)sender).DocumentTitle;

【编辑推荐】

  1. 关于C#知识点总结
  2. C#开发和使用中的33个技巧
  3. SQL Server存储过程介绍
  4. C#下SQL Server 2008表类型参数传递
  5. C#向SQL Server中插入记录时的问题
责任编辑:book05 来源: 新浪博客
相关推荐

2009-08-18 13:59:21

C#多标签浏览器

2009-08-07 15:58:54

C#字符串插入html

2009-06-09 11:41:13

思科MPLS技术原理

2010-08-24 10:11:26

DIV标签

2009-06-05 10:12:36

Struts标签库HTML标签

2010-06-17 23:46:21

多协议标签交换MPLS

2010-06-10 11:08:55

多协议标签交换

2022-09-06 07:02:17

棋盘布局CSS

2009-08-04 13:41:31

2009-05-13 11:50:17

C#多继承接口

2009-06-16 10:20:05

多继承C#

2009-07-07 17:43:33

JSP系统

2010-01-05 21:35:51

MPLS

2010-09-10 09:51:05

DIVCSS

2011-09-26 11:22:10

2023-08-03 09:12:02

2010-06-25 14:39:12

多协议标签交换

2010-06-10 11:16:50

MPLS多协议标签交换

2024-01-30 10:07:40

多协议标签交换MPLS网络技术

2023-12-12 07:16:34

HTML标签开发
点赞
收藏

51CTO技术栈公众号