分享
 
 
 

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

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

前言

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去发帖子,我尽力回答大家的问题!!!!!

*/

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有