【【如何制作和使用用户控件】】

zhu660 2008-12-18 10:58:41
如何制作和使用“用户控件”啊?请大侠给一个【十分十分十分十分十分十分十分】【简单和详细】的【示例】(最好是一步一步的),88分全赠!!!
...全文
816 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
小火龙果 2010-07-20
  • 打赏
  • 举报
回复
你就新建一个用户控件的页面 然后拖进去一个按钮 一个文本框 和 aspx文件一样 设置完时间后 再建一个aspx页面 直接用鼠标把刚才建好的 给拖上来 就行了
likevs 2008-12-21
  • 打赏
  • 举报
回复
想简单是吧?

好,看书!
zhu660 2008-12-21
  • 打赏
  • 举报
回复
现在在csdn上提问,很难得到很好的答案了!我朋友也有同样感触,估计csdn快over了!
zhu660 2008-12-21
  • 打赏
  • 举报
回复
upupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupu
zhu660 2008-12-20
  • 打赏
  • 举报
回复
看来我有必要给点提示了!

1、新建项目
2、在解决方案中右键添加【web用户控件】,生成了 …….ascx文件
3、把该.ascx文件当成是.aspx设计,比如做一个登陆框
4、
5、
…………………………


我是刚刚接触ASP.NET的!!!谢谢!!!
meyoulaile 2008-12-20
  • 打赏
  • 举报
回复
jf
study
zhu660 2008-12-19
  • 打赏
  • 举报
回复
非常感谢!学习
ChengKing 2008-12-19
  • 打赏
  • 举报
回复
一些自定义控件开发资料/示例:
http://blog.csdn.net/ChengKing/category/288694.aspx
mengxj85 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhu660 的回复:]
1、简单
2、详细
3、示例
4、步骤

我的要求是不是太多了啊?
[/Quote]
不多啊
添加新项=》Web用户控件
简单做就直接往里面拖控件就可以了,如果想实现功能强大些,可以自己在后台写

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class userControl_AddProcess : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{

}
//声明标题控件
private Label lbProcDescribe = new Label();//工序描述
private Label lbProcDetail = new Label();//工序具体明细
private Label lbProcMoney = new Label();//工序金额
//声明文本控件
private TextBox txtProcDescribe = new TextBox();//工序描述
private TextBox txtProcDetail = new TextBox();//工序具体明细
private TextBox txtProcMoney = new TextBox();//工序金额
//声明窗口控件
private Panel pnFrame = new Panel();

//初始化控件
public userControl_AddProcess()
{
this.lbProcDescribe.Text = "工序描述";
this.lbProcDetail.Text = "具体明细";
this.lbProcMoney.Text = "金额";
//文本框样式
this.txtProcDescribe.Width = 250;
this.txtProcDetail.Width = 300;
this.txtProcMoney.Width = 50;
//将声明的各子控件添加到AddProcess中
this.Controls.Add(lbProcDescribe);
this.Controls.Add(lbProcDetail);
this.Controls.Add(lbProcMoney);
this.Controls.Add(txtProcDescribe);
this.Controls.Add(txtProcDetail);
this.Controls.Add(txtProcMoney);
this.Controls.Add(pnFrame);
this.Controls.Add(pnFrame);
}

//添加属性
//工序描述
public string ProcDescribe
{
get
{
return this.txtProcDescribe.Text;
}
set
{
this.txtProcDescribe.Text = value;
}
}
//工序具体明细
public string ProcDetail
{
get
{
return this.txtProcDetail.Text;
}
set
{
this.txtProcDetail.Text = value;
}
}
//工序金额
public string ProcMoney
{
get
{
return this.txtProcMoney.Text;
}
set
{
this.txtProcMoney.Text = value;
}
}

//绘制表格,将控件输出
protected override void Render(HtmlTextWriter writer)
{
//base.Render(writer);
this.pnFrame.RenderBeginTag(writer);//输出Panel

//在Panel中绘制表格
writer.AddAttribute(HtmlTextWriterAttribute.Class, "tableFrame");
writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
writer.AddAttribute(HtmlTextWriterAttribute.Height, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
//添加Lable
this.lbProcDescribe.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
//添加TextBox
this.txtProcDescribe.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lbProcDetail.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.txtProcDetail.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lbProcMoney.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.txtProcMoney.RenderControl(writer);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();

this.pnFrame.RenderEndTag(writer);
}
}

可以直接用
zhu660 2008-12-19
  • 打赏
  • 举报
回复
1、简单
2、详细
3、示例
4、步骤

我的要求是不是太多了啊?
zhu660 2008-12-19
  • 打赏
  • 举报
回复
thank you ! ---------读题啊!
greatverve 2008-12-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/greatverve/archive/2008/12/15/3521561.aspx
还有原代码,非常简单,既然你说要简单的,那献丑了。
greatverve 2008-12-19
  • 打赏
  • 举报
回复
我正好刚做了个。呵呵。
别样苍茫 2008-12-19
  • 打赏
  • 举报
回复
右键 添加用户控件 把你想用的控件拖上去就行了。。。。 然后代码实现跟ASP.NET一般的页面一样
在ASP.NET里面如果要使用用户控件 直接拖到页面上来用就OK了
别样苍茫 2008-12-19
  • 打赏
  • 举报
回复
这里有个现成的示例
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UcAddSortAndEdit.ascx.cs" Inherits="Controls_PFGZ_UcAddSortAndEdit" %>
<asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">
<div>
<table border="1" bordercolor="#666666" cellpadding="4" cellspacing="0" rules="rows"
style="border-collapse: collapse" width="100%">
<tr>
<td class="tableTitleText" style="width: 55px; background-color: #acb8de">
类别名称</td>
<td>
<asp:TextBox ID="txtTitle" runat="server" Width="351px"></asp:TextBox>
<asp:CheckBox ID="cbxIsCheck" runat="server" Text="是否作为顶级类" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtTitle">*</asp:RequiredFieldValidator></td>
</tr>
<tr style="color: #000000">
<td class="tableTitleText" style="width: 55px; background-color: #acb8de">
选择分类</td>
<td style="background: none transparent scroll repeat 0% 0%">
<asp:ListBox ID="lbx1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1"
DataTextField="sort" DataValueField="id" Height="115px" OnSelectedIndexChanged="lbx1_SelectedIndexChanged"
Width="163px"></asp:ListBox><asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:lhkhConnectionString2 %>" SelectCommand="SELECT * FROM [Sort] WHERE ([fatherId] = @fatherId)">
<SelectParameters>
<asp:Parameter DefaultValue="0" Name="fatherId" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:ListBox ID="lbx2" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2"
DataTextField="sort" DataValueField="id" Height="115px" OnSelectedIndexChanged="lbx2_SelectedIndexChanged"
Width="163px"></asp:ListBox><asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:lhkhConnectionString %>" SelectCommand="SELECT * FROM [Sort] WHERE ([fatherId] = @fatherId)">
<SelectParameters>
<asp:ControlParameter ControlID="lbx1" Name="fatherId" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:ListBox ID="lbx3" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource3"
DataTextField="sort" DataValueField="id" Height="115px" OnSelectedIndexChanged="lbx3_SelectedIndexChanged"
Width="163px"></asp:ListBox>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:lhkhConnectionString %>"
SelectCommand="SELECT * FROM [Sort] WHERE ([fatherId] = @fatherId)">
<SelectParameters>
<asp:ControlParameter ControlID="lbx2" Name="fatherId" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:ListBox ID="lbx4" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource4"
DataTextField="sort" DataValueField="id" Height="115px" OnSelectedIndexChanged="lbx4_SelectedIndexChanged"
Width="163px"></asp:ListBox>
<asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:lhkhConnectionString %>"
SelectCommand="SELECT * FROM [Sort] WHERE ([fatherId] = @fatherId)">
<SelectParameters>
<asp:ControlParameter ControlID="lbx3" Name="fatherId" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:ListBox ID="lbx5" runat="server" DataSourceID="SqlDataSource5" DataTextField="sort"
DataValueField="id" Height="115px" Width="163px"></asp:ListBox><br />
<asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:lhkhConnectionString %>"
SelectCommand="SELECT * FROM [Sort] WHERE ([fatherId] = @fatherId)">
<SelectParameters>
<asp:ControlParameter ControlID="lbx4" Name="fatherId" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</td>
</tr>
<tr>
<td class="tableTitleText" style="vertical-align: top; width: 50px; background-color: #acb8de">
备注</td>
<td>
<asp:TextBox ID="txtRemark" runat="server" Height="45px" TextMode="MultiLine" Width="818px"></asp:TextBox> 
</td>
</tr>
<tr>
<td class="tableTitleText" style="vertical-align: top; width: 50px; height: 34px;
background-color: #acb8de">
</td>
<td style="height: 34px">
<asp:Button ID="btnAdd" runat="server" OnClick="btnAdd_Click" Text="添加" />
<asp:Button ID="btnModify" runat="server" OnClick="btnModify_Click" Text="更新" />
<asp:Button ID="btnCancel" runat="server" Text="取消" /> 
</td>
</tr>
</table>
</div>
</asp:Panel>




zhu660 2008-12-19
  • 打赏
  • 举报
回复
救命!
zhu660 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhu660 的回复:]
2、3、4楼,我谢你啊!
[/Quote]
同时感谢6、7楼


总之感谢"jaylianyu"帮我up
长腿爸爸 2008-12-18
  • 打赏
  • 举报
回复
注意事项:
用户控件中可以使用其他用户控件
可以像页面一样,在用户控件中使用其他用户控件
但用户控件中不可包含自己,也不能发生任何循环嵌套

用户控件与Page:

用户控件与页面的区别?
后缀名:用户控件以.ascx为后缀名,而页面后缀名是.aspx
指令:用户控件为@Control,页面是@Page
继承:用户控件继承自System.Web.UI.UserControl,而页面继承自System.Web.UI.Page
用户控件不可直接访问,页面可直接访问

长腿爸爸 2008-12-18
  • 打赏
  • 举报
回复
Control指令:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserLoginControl.ascx.cs" Inherits="_Controls_UserLoginControl" %>

后台代码
public partial class _Controls_UserLoginControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
... ...
}

--------------------------
页面中注册和使用

<%@ Register Src="../_Controls/UserLoginControl.ascx" TagName="UserLoginControl"
TagPrefix="uc1" %>
……
<uc1:UserLoginControl ID= "ulcLogin" runat="server" />
zhu660 2008-12-18
  • 打赏
  • 举报
回复
2、3、4楼,我谢你啊!
加载更多回复(4)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧