如何给用户控件定义属性(C#:ASP.NET)

asp.net|控件

前言

ASP.NET的用户控件功能很强大,在web窗体里面调用相信大家都会,如果要给用户控件定义属性,那该怎么做呢?只要你看完这篇文章保你会给自己的控件上弄上几个属性。本篇文章不太适合初学.NET的朋友,涉及到一些面向对象的知识,如果您不了解这些知识,请参阅相关书籍

在这里下载电子图书(http://www.cs-aspx.net/down.aspx)

程序
namespace DotNet
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

/// <summary>
/// MyControl 的摘要说明。
/// </summary>
public class MyControl : System.Web.UI.UserControl
{

protected System.Web.UI.WebControls.DropDownList Drop;
protected System.Web.UI.WebControls.CheckBoxList Check;
protected System.Web.UI.WebControls.RadioButtonList Radio;
protected System.Web.UI.WebControls.Button btnGetValue;
protected System.Web.UI.WebControls.Label lbMsg;

private ViewTypes _MyTypes;
private string _MyValue = "";
private int _MyMaxNumber=0;
private int _MyMinNumber=0;
//我们定义的属性,_MyTypes枚举值,_MyMaxNumber,_MyMinNumber为3个控件绑定的最小值,和最大值.
public string MyValue //这里暂时不会用到
{

get
{
return _MyValue;
}
set
{
_MyValue = value;
}
}
public enum ViewTypes//定义3个控件的枚举值
{
Drop,
Check,
Radio
}
public ViewTypes MyTypes
{
get
{
return _MyTypes;
}
set
{
_MyTypes= value;
}
}
public int MyMaxNumber
{
get
{
return _MyMaxNumber;
}
set
{
_MyMaxNumber=value;
}
}
public int MyMinNumber
{
get
{
return _MyMinNumber;
}
set
{
_MyMinNumber=value;
}
}

/*
以上MyValue,MyTypes,MyMaxNumber,MyMinNumber四个模块都是给控件定义的四个属性,在这里面get{}部分在这里有读取值的作用,而set{}部分是往属性里面写值,。注意:他们前面的要用public定义,绝对不能用private,protected定义这里涉及到一个见级性问题,不明白的朋友请参阅相关书籍,还一个要注意的地方是我们定义的属性值不能和上面声明的变量名一样。例如:
private int _intCount;
public int _intCount//切忌,这里千万不要和上面声明的变量是一样的,在这里是错误的,要改成public int intCount
{
get{return _intCount;}
set{_intCount=value;}
}
在这里有个技巧,再声明变量的时候,可以给第一个字母加上下划线,或者再定义属性的时候的时候第一个字母大写,比如private int intCount,然后就是public int IntCount。
我们在来说一下这几个属性是干什么用的:MyTypes是显示哪种控件(在这里定义了一个枚举,里面有三个值,分别指的是下拉列表框,复选框,和单选按钮,别忘了在上面声明哦 private ViewTypes _MyTypes);MyMaxNumber,MyMinNumber是绑定到控件上最大值和最小值;
*/

private void Page_Load(object sender, System.EventArgs e)
{
this.GetControlInformation();//调用函数
}
private void GetControlInformation()
{

if(!Page.IsPostBack)
for(int intCount=this._MyMinNumber;intCount<=this._MyMaxNumber;intCount++)
//迭代绑定控件,_MyMinNumber为起始值,_MyMaxNumber为最大值
{

switch(this._MyTypes)//判断枚举值
{
case ViewTypes.Drop://显示下拉列表,绑定值,以下都是一样的...
this.Drop.Visible=true;
this.Drop.Items.Add(intCount.ToString());
break;
case ViewTypes.Check:
this.Check.Visible=true;
this.Check.RepeatColumns=this._MyMaxNumber;
this.Check.Items.Add(intCount.ToString());
break;
case ViewTypes.Radio:
this.Radio.Visible=true;
this.Radio.RepeatColumns=this._MyMaxNumber;
this.Radio.Items.Add(intCount.ToString());
break;

}
}

}
//上面三个控件的Visible属性都设置为false,

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnGetValue.Click += new System.EventHandler(this.btnGetValue_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnGetValue_Click(object sender, System.EventArgs e)
{
string str="";
if(this._MyTypes==ViewTypes.Drop)
{
str="下拉列表框";
}
else if(this._MyTypes==ViewTypes.Check)
{
str="复选框";
}
else if(this._MyTypes==ViewTypes.Radio)
{
str="单选按钮";
}
this.lbMsg.Text="控件类型:"+str+" 绑定数据最小值:"+this.MyMinNumber.ToString()+"最大值:"+this.MyMaxNumber.ToString();
}

/*
<%@ Register TagPrefix="UserControl" src="MyControl.ascx" TagName="MyControl" %>
<UserControl:MyControl id="con" runat="server" MyTypes="Radio" MyMinNumber="1" MyMaxNumber="10"></UserControl:MyControl>
按钮的功能是在标签控件上显示相关信息,选择哪种类型,和哪个控件绑定的最大值和最小值,行了到现在你就可以调用这个控件了,当然程序的健壮性还得有所改善,在这里只是起到抛砖引玉的作用。大家有什么不会的就到http://www.cs-aspx.net去发帖子,我尽力回答大家的问题!!!!!
*/

}
}

时间: 2024-12-27 12:07:14

如何给用户控件定义属性(C#:ASP.NET)的相关文章

在asp.net中为Web用户控件添加属性和事件

asp.net|web|控件 在asp.net中为Web用户控件添加属性和事件 在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功. 但是,技术是在不断的发展着,引

c#-C# 用户控件 Text属性无法显示

问题描述 C# 用户控件 Text属性无法显示 请教下各位 我建立个一个空白的用户控件 没有额外的引用 添加了一个自动属性 public string Text { get; set; } 编译后 给出提示 需要隐藏 或者覆盖方法 就改为public override string Text { get; set; } 就没有额外的提示 但是编译 拖出控件后 没有Text这个属性 而其他自制的属性能正常显示 请问该如何解决 解决方案 重新编译下看看.你第二个写法没问题. 解决方案二: 额?请问什

FormView切换Mode为Edit时,用户控件的属性丢失?

问题描述 如题?并且我做了一下测试<asp:TextBoxID="mbrTest1"runat="server"Text='<%#Bind("Name")%>'/><bse:MyTextBoxid="mbrTest2"runat="server"Value='<%#Bind("Name")%>'/><bse:MyTextBoxID=&

为asp.net中的Web用户控件添加属性和事件

asp.net|web|控件      在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功.         但是,技术是在不断的发展着,引用某位Net专家的话讲―

用户控件的属性,怎样传到调用该控件的页面?

问题描述 首先我定义了一个新闻详细显示的用户控件shownewInfo.ascx;(说明:该控件有一个属性PageTitle=data[新闻标题内容])然后通过一个新闻显示页面shownewInfo.aspx调用shownewInfo.ascx,然后我在shownewInfo.aspx中的PageLoad中写:this.Title=this.shownewInfo.PageTitle;但生成静态页面的时候<title></title>中无内容,通过我测试以后,发现原因:是当show

页面引用用户控件,取不到用户控件的属性的值

问题描述 在页面pagea.aspx中引用用户控件cnt.ascxcnt.ascx的Page_Load查数据库得到记录数.赋值给cnt.ascx中的属性t问题是:为什么在pagea.aspx页面第一次加载的时候,取不到cnt.ascx中查询到的记录数 解决方案 解决方案二:高手路过的时候帮帮忙呀解决方案三:在用户控件里面添加其属性在页面放上用户控件的时候直接当属性取出来解决方案四:用户控件中的属性是需要在用户控件执行完查询后返回的结果如果直接取那也取不到真实的结果啊?解决方案五:我将取值写在页面

用户控件属性赋值问题

问题描述 我定义了一个用户控件,定义属性值tablename需要动态去指定,这个tablename就相当于是个公共变量,我在用户控件中需要引用他.我在webform中添加这个控件后给tablename赋值为什么不行,不知道该怎么实现,这个属性该怎么去定义. 解决方案 解决方案二:可以的呀,你把代码贴点出来看看解决方案三:就是在用户控件定义一个公用属性,在使用时的WEBFORM里赋值.但是用户控件里的点某个按钮时要用到这个变量,用户控件中的按钮事件没有去定义什么的解决方案四:privateintt

[ASP.NET开发系列]在用户控件中添加属性

asp.net|控件 在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏.用户登录/注册和首页上面的一些固定栏目等.这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护. 在ASP.NET的web编程中提供了一种叫做"用户控件"可以帮助我们完成这种做法,其文件扩展名是".ascx",由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一个<form>标志,所以ascx用户控

ASP.NET用户控件说明和添加事件

在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏.用户登录/注册和首页上面的一些固定栏目等.这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护. 在ASP.NET的web编程中提供了一种叫做"用户控件"可以帮助我们完成这种做法,其文件扩展名是".ascx",由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一个<form>标志,所以ascx用户控件不能包含<fo