好的,就给你个例子吧,,。以下是TestUserControl.ascx文件代码如下:<%@ Control Language="vb" AutoEventWireup="false" Codebehind="TestUserControl.ascx.vb" Inherits="WebApplication3.TestUserControl" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> <FONT face="宋体"> <P align="center"><asp:label id="Label1" runat="server" Width="65px">用户名:</asp:label><asp:textbox id="TxtUserName" runat="server"></asp:textbox><BR> <asp:label id="Label2" runat="server">密 码:</asp:label><asp:textbox id="TxtUserPass" runat="server"></asp:textbox><BR> <asp:DropDownList id="DropDownList1" Width="92px" runat="server"> <asp:ListItem Value="SuperAdmin" Selected="True">超级管理员</asp:ListItem> <asp:ListItem Value="UserAdmin">普通管理员</asp:ListItem> </asp:DropDownList><BR> <asp:Button id="Button1" Width="73px" runat="server" Text="确定" Height="29px"></asp:Button></P> </FONT> =========================================以下是:TestUserControl.ascx.vb代码如下:Imports System Imports System.Web Imports System.Web.ui Public Class TestUserControl Inherits System.Web.UI.UserControl#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents TxtUserName As System.Web.UI.WebControls.TextBox Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents TxtUserPass As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList '注意: 以下占位符声明是 Web 窗体设计器所必需的。 '不要删除或移动它。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的 '不要使用代码编辑器修改它。 InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 End Sub Public Property UserName() As String Get Return TxtUserName.Text End Get Set(ByVal Value As String) TxtUserName.Text = Value End Set End Property Public Property UserPass() As String Get Return TxtUserPass.Text End Get Set(ByVal Value As String) TxtUserPass.Text = Value End Set End Property Public Property Flag() As String Get Return DropDownList1.SelectedItem.Text End Get Set(ByVal Value As String) DropDownList1.SelectedItem.Text = Value End Set End Property Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Response.Redirect("DownLoad.aspx") If TxtUserName.Text = "" Then Response.Write("<script>alert('错了');</script>") Else 'Response.Write("<script>alert('对了" & TxtUserName.Text & "');</script>") End If Response.Write("<script>alert('你选择的是 " & DropDownList1.SelectedItem.Text & "');</script>") End Sub End Class
上面那两个是简单的用户控件,下面给你调用这个用户控件的代码:以下是TestUserLoin.aspx代码如下:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="TestUserLogin.aspx.vb" Inherits="WebApplication3.TestUserLogin"%> <%@ Register TagPrefix="UserLogin" TagName="MyLogin" Src="TestUserControl.ascx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>TestUserLogin</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout" topmargin="80"> <form id="Form1" method="post" runat="server"> <table id="table1" align="center" width="80%"> <tr> <td align="center"> <UserLogin:MyLogin id="logins1" runat="server"></UserLogin:MyLogin> </td> </tr> <tr> <td align="center"><asp:Button ID="btn1" Runat="server" Text=" 登 陆 "></asp:Button></td> </tr> <tr> <td align="center"> <asp:Label ID="lblmsg" Runat="server" ForeColor="#ff0000"></asp:Label></td> </tr> </table> </form> </body> </HTML> ================================以下是TestUserLogin.aspx.vb代码如下:Imports System Imports System.Web Imports System.Web.UIPublic Class TestUserLogin Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents btn1 As System.Web.UI.WebControls.Button Protected WithEvents lblmsg As System.Web.UI.WebControls.Label '注意: 以下占位符声明是 Web 窗体设计器所必需的。 '不要删除或移动它。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的 '不要使用代码编辑器修改它。 InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 End Sub Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click lblmsg.Text = CType(Me.FindControl("logins1"), TestUserControl).UserName lblmsg.Text &= "<br>" & CType(Me.FindControl("logins1"), TestUserControl).UserPass lblmsg.Text &= "<br>" & CType(Me.FindControl("logins1"), TestUserControl).Flag End Sub End Class
给你三个例子吧。第一个,bool类型属性,默认值为true,viewstate保存状态 [DefaultValue(true), Bindable(true), PersistenceMode(PersistenceMode.Attribute), Category("SpiderSurfGrid")] public bool ssgMode { get { object b = ViewState["ssgMode"]; bool blSpiderSurfGridMode = ((b == null) ? true : (bool)b); ViewState["ssgMode"] = blSpiderSurfGridMode; return blSpiderSurfGridMode; } set { ViewState["ssgMode"] = value; } }
第二个,可以用datatable/dataset或者dataviewmanager赋值的属性,注意DvmSource是内部属性,设计时不可见private DataViewManager dvmSource;private DataViewManager DvmSource { get { return dvmSource; } set { dvmSource = value; } }[ Bindable(true), PersistenceMode(PersistenceMode.Attribute), Category("SpiderSurfGrid")] public object ssgDataSource { get { return dvmSource; } set { if(value is DataViewManager) dvmSource = (DataViewManager)value; else if(value is DataSet) { DataViewManager dvm = new DataViewManager((value as DataSet)); dvmSource = dvm; } else if(value is DataTable) { DataSet ds = new DataSet(); ds.Tables.Add((value as DataTable)); DataViewManager dvm = new DataViewManager(ds); dvmSource = dvm; } } }
不是已经定义了吗?
如果需要逻辑控制就在set和get块中加上!如果属性是在其他页面用就public否则private .
<FONT face="宋体">
<P align="center"><asp:label id="Label1" runat="server" Width="65px">用户名:</asp:label><asp:textbox id="TxtUserName" runat="server"></asp:textbox><BR>
<asp:label id="Label2" runat="server">密 码:</asp:label><asp:textbox id="TxtUserPass" runat="server"></asp:textbox><BR>
<asp:DropDownList id="DropDownList1" Width="92px" runat="server">
<asp:ListItem Value="SuperAdmin" Selected="True">超级管理员</asp:ListItem>
<asp:ListItem Value="UserAdmin">普通管理员</asp:ListItem>
</asp:DropDownList><BR>
<asp:Button id="Button1" Width="73px" runat="server" Text="确定" Height="29px"></asp:Button></P>
</FONT>
=========================================以下是:TestUserControl.ascx.vb代码如下:Imports System
Imports System.Web
Imports System.Web.ui Public Class TestUserControl
Inherits System.Web.UI.UserControl#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents TxtUserName As System.Web.UI.WebControls.TextBox
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents TxtUserPass As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub Public Property UserName() As String
Get
Return TxtUserName.Text
End Get
Set(ByVal Value As String)
TxtUserName.Text = Value
End Set
End Property Public Property UserPass() As String
Get
Return TxtUserPass.Text
End Get
Set(ByVal Value As String)
TxtUserPass.Text = Value
End Set
End Property Public Property Flag() As String
Get
Return DropDownList1.SelectedItem.Text
End Get
Set(ByVal Value As String)
DropDownList1.SelectedItem.Text = Value
End Set
End Property Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Response.Redirect("DownLoad.aspx")
If TxtUserName.Text = "" Then
Response.Write("<script>alert('错了');</script>")
Else
'Response.Write("<script>alert('对了" & TxtUserName.Text & "');</script>")
End If
Response.Write("<script>alert('你选择的是 " & DropDownList1.SelectedItem.Text & "');</script>")
End Sub
End Class
<%@ Register TagPrefix="UserLogin" TagName="MyLogin" Src="TestUserControl.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>TestUserLogin</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" topmargin="80">
<form id="Form1" method="post" runat="server">
<table id="table1" align="center" width="80%">
<tr>
<td align="center">
<UserLogin:MyLogin id="logins1" runat="server"></UserLogin:MyLogin>
</td>
</tr>
<tr>
<td align="center"><asp:Button ID="btn1" Runat="server" Text=" 登 陆 "></asp:Button></td>
</tr>
<tr>
<td align="center">
<asp:Label ID="lblmsg" Runat="server" ForeColor="#ff0000"></asp:Label></td>
</tr>
</table>
</form>
</body>
</HTML>
================================以下是TestUserLogin.aspx.vb代码如下:Imports System
Imports System.Web
Imports System.Web.UIPublic Class TestUserLogin
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents btn1 As System.Web.UI.WebControls.Button
Protected WithEvents lblmsg As System.Web.UI.WebControls.Label '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
lblmsg.Text = CType(Me.FindControl("logins1"), TestUserControl).UserName
lblmsg.Text &= "<br>" & CType(Me.FindControl("logins1"), TestUserControl).UserPass
lblmsg.Text &= "<br>" & CType(Me.FindControl("logins1"), TestUserControl).Flag
End Sub
End Class
[DefaultValue(true),
Bindable(true),
PersistenceMode(PersistenceMode.Attribute),
Category("SpiderSurfGrid")]
public bool ssgMode
{
get
{
object b = ViewState["ssgMode"];
bool blSpiderSurfGridMode = ((b == null) ? true : (bool)b);
ViewState["ssgMode"] = blSpiderSurfGridMode;
return blSpiderSurfGridMode;
} set
{
ViewState["ssgMode"] = value;
}
}
{
get
{
return dvmSource;
} set
{
dvmSource = value;
}
}[
Bindable(true),
PersistenceMode(PersistenceMode.Attribute),
Category("SpiderSurfGrid")]
public object ssgDataSource
{
get
{
return dvmSource;
} set
{
if(value is DataViewManager)
dvmSource = (DataViewManager)value;
else if(value is DataSet)
{
DataViewManager dvm = new DataViewManager((value as DataSet));
dvmSource = dvm;
}
else if(value is DataTable)
{
DataSet ds = new DataSet();
ds.Tables.Add((value as DataTable));
DataViewManager dvm = new DataViewManager(ds);
dvmSource = dvm;
}
}
}
{
WebPage = 1,
Attachment = 0
}
...
private SpiderSurfGridExportingMode enuSsgemExportingMode;
[Bindable(true),
Category("SpiderSurfGrid"),
DefaultValue(SpiderSurfGridExportingMode.Attachment)]
public SpiderSurfGridExportingMode ssgExportingMode
{
get
{
return enuSsgemExportingMode;
} set
{
enuSsgemExportingMode = value;
}
}
这用法有多种
1。“别和陌生人说话”的意思,对外都用一个变量来表示
2。还有就是,一些属性可能在对象初始化时不要求获取值,知道有人调用这个值时他才在 get中去获取值并且复制到私有变量,这样可以提高效率,减去不必要的支出
private string tableid;
public string TableID
{
get
{
if(tableid!=null)
return tableid;
else
{taleid=getValue();return tableid; }
}
set
{
tableid=value;
}
}3。控制权限
通过get 和set 控制 读 写权限
我就说一下怎么样给控件属性赋值吧
((用户控件命名空间)this.FindControl("控件id")).属性="";
例如:
((ServerFlat.UserCtrl.DataGridView)this.FindControl("DataGridViewNews")).ImgUrl="../Images/kjxw.gif";
ServerFlat.UserCtrl.DataGridView表示在ServerFlat这个解决方案中的UserCtrl中的DataGridView这个用户控件。DataGridViewNews表示DataGridView在新页面中的id。