如何給使用者控制項定義屬性(C#:ASP.NET)

來源:互聯網
上載者:User
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 Form設計器產生的程式碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web Form設計器所必需的。
//
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去發文章,我儘力回答大家的問題!!!!!
*/

}
}





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.