在这个控件中实现了一个树形控件,通过建立一个 treeview类并添加到控件中实现。
关键点:
1、声明类时要加INamingContainer关键字
2、不要修改Render函数或RenderContol函数,否则显示效果要自己一点点写成html代码并输出。
这个控件实现的功能很简单,就是通过设置控件的Text属性给树形控件添加一个节点,只是添加了一个,这为以后添加多个节点做好准备。并且默认控件的高和宽没有设置,需要设置后才能显示出控件的外形。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
[assembly: TagPrefix("MyComponent", "My")]
namespace MyComponent
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyLable text=Mytree runat=server></{0}:MyLable>")]
public class MyLable :WebControl,INamingContainer
{
public TreeView MyTree;
public MyLable()
{
MakeTree();
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["Text"] = value;
}
}
public void MakeTree()
{
MyTree = new TreeView();
MyTree.Font.Size = 12;
TreeNode tn = new TreeNode();
tn.Text = Text ;
MyTree.Nodes.Add(tn);
}
protected override void CreateChildControls()
{
MakeTree();
Controls.Add(MyTree);
}
}
}