点滴积累,融会贯通

-----喜欢一切有兴趣的东西

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  265 随笔 :: 0 文章 :: 402 评论 :: 13 Trackbacks
1 建立一个WebControlLibrary项目

2 编写控件代码
namespace DropDownListTemp
{
    [DefaultProperty(
"Text")]
    [ToolboxData(
"<{0}:WebDropDownList runat=server></{0}:WebDropDownList>")]
    
public class WebDropDownList : CompositeControl
    {
        
///////////////////////////////////////////////////////////////////////
        // 1. 定义属性
        ///////////////////////////////////////////////////////////////////////
        [Bindable(true)]
        [Category(
"Appearance")]
        [DefaultValue(
"")]
        [Localizable(
true)]
        
public model Model
        {
            
get
            {
                
return modeltemp;
            }
            
set
            {
                modeltemp 
= value;
            }
        }
        
public enum model
        {
            sex,city
        }
        
public model modeltemp;

        
///////////////////////////////////////////////////////////////////////
        // 2. 定义控件
        ///////////////////////////////////////////////////////////////////////
        private Label lbTemp;
        
private DropDownList ddlTemp;

        
///////////////////////////////////////////////////////////////////////
        // 3. 添加控件
        ///////////////////////////////////////////////////////////////////////
        protected override void CreateChildControls()
        {
            Controls.Clear();

            
//添加label标题
            lbTemp = new Label();
            lbTemp.ID 
= "lbTemp";
            lbTemp.Text 
= "DropDownList Example";
            Controls.Add(lbTemp);

            
//添加换行
            Controls.Add(new LiteralControl("<br>"));

            
//添加下拉列表
            ddlTemp = new DropDownList();
            ddlTemp.ID 
= "ddlTemp";
            ddlTemp.Width 
= 200;
            ListItem list 
= new ListItem(" ""-1");
            ddlTemp.Items.Add(list);
            
switch (modeltemp)
            {
                
case model.sex:
                    ListItem listman 
= new ListItem("""0");
                    ddlTemp.Items.Add(listman);
                    ListItem listwoman 
= new ListItem("""1");
                    ddlTemp.Items.Add(listwoman);
                    
break;
                
case model.city:
                    ListItem listBJ 
= new ListItem("北京""0");
                    ddlTemp.Items.Add(listBJ);
                    ListItem listTJ 
= new ListItem("天津""1");
                    ddlTemp.Items.Add(listTJ);
                    
break;
            }
            Controls.Add(ddlTemp);

            
base.CreateChildControls();
        }
    }
}
3 测试使用控件
建立一个web页面,添加控件dll到工具箱,把控件拖到叶面上,选择model属性为sex或city,即可,默认是sex
posted on 2007-09-24 10:18 小寒 阅读(823) 评论(4)  编辑 收藏 所属分类: ASP.NET编程&技巧

评论

#1楼 [楼主] 2007-09-25 15:13 小寒      
修改TagPrefix:
控件项目中AssemblyInfo.cs中添加引用
using System.Web.UI;
然后添加
[assembly: TagPrefix("WebDropDownList ", "ddl")]
  回复  引用  查看    

#2楼 [楼主] 2007-09-25 15:14 小寒      
隐藏属性:
在属性上添加:[Browsable(false)]即可
  回复  引用  查看    

#3楼 [楼主] 2007-09-25 15:16 小寒      
复合控件要修改继承的类:
由WebControl变成CompositeControl
  回复  引用  查看    

#4楼 [楼主] 2007-09-26 14:29 小寒      
属性设置为选择url
[Editor("System.Web.UI.Design.UrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
属性设置为选择xml文件
[Editor("System.Web.UI.Design.XmlUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
属性设置为选择图片
[Editor("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor)]
  回复  引用  查看