在新建项的时候,选择Web用户控件,可用来自定义自己的控件,做好后,直接拖到页面即可使用
自定义控件与WEB交互,需要在 自定义控件里面 写 属性,如:

    public string CityID
{
get { return this.DropDownList1.SelectedValue; } set{ this.DropDownList1.SelectedValue = value;}
}

在外面调用的时候如下即可:

Label1.Text = this.City1.CityID;

自定义样式(公开属性)

    public ConsoleColor Color { get; set; }
public string Title { get; set; }

定义 样式属性

<h1><%=this.Title  %></h1>
<div style='background-color:<%=this.Color%>'>
组装的一些控件
</div>

样式调用

 this.City1.Title = "标题";
this.City1.Color = ConsoleColor.Blue;
Web用户控件 公开事件

由于控件是 封装过的,所以当用户控件激发事件时,最外层是得不到数据的,解决办法有3种:

注:用户控件需设置 AutoPostBack="True"

-------- 1.利用系统的 EventHandler 委托

<1>.在用户控件后台文件内新建一个属性

    public string CityID
{
get { return DropDownList1.SelectedValue; }
set { DropDownList1.SelectedValue = value; }
}

<2>.新建一个 event 事件

public event EventHandler CitySelected = null;

<3>.当用户控件中的SelectedIndexChanged事件触发时,激活 CitySelected 事件

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.CitySelected != null)
{
this.CitySelected(this, null);
}
}

<4>.在页面的后台 新建一个方法,用来处理用户控件返回的信息

    public void showCity(object sender, EventArgs e)
{
this.Label1.Text = this.City1.CityID;
}

<5>.在页面的用户控件中 注册事件

<uc1:City ID="City1" runat="server" OnCitySelected="showCity" />
利用自定义的 委托

<1>.自定义一个委托

public delegate void CitySelectedEventHander(string CityID);

<2>.自定义一个事件

    public event CitySelectedEventHander CitySeleted = null;

<3>.当用户控件触发时,激活自定义事件

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (CitySeleted != null)
{
string CityID = this.DropDownList1.SelectedValue;
this.CitySeleted(CityID);
}
}

<4>.在页面后台新建一个方法,用于处理用户控件的事件

    public void ShowCity(string id)
{
this.Label1.Text = id;
}

<5>.在页面的用户控件中 注册事件

    <uc1:City2 ID="City21" runat="server" onCitySeleted="ShowCity" />
利用系统委托 泛型事件(推荐使用)

<1>.定义一个类,继承EventArgs类,主要用于封装属性,以便日后扩展

    public class CityEventArgs:EventArgs
{
public string CityID { get; set; }
}

<2>.定义一个 泛型事件,用自定义的类做 参数

    public event EventHandler<CityEventArgs> CitySeleted = null;

<3>.在页面后台新建一个方法,用于处理用户控件的事件

    public void ShowCity(object sender,CityEventArgs e)
{
this.Label2.Text = e.CityID;
}

<4>.在页面的用户控件中 注册事件

    <uc1:City3 ID="City31" runat="server" OnCitySeleted="ShowCity" />

注:注册事件也可用如下方法:

    protected void Page_Load(object sender, EventArgs e)
{
this.City31.CitySeleted += new EventHandler<CityEventArgs>(City31_CitySeleted);
} void City31_CitySeleted(object sender, CityEventArgs e)
{
this.Label2.Text = e.CityID;
}
动态增加用户控件

在上面的基础上,增加如下内容:

Control c = this.LoadControl("City3.ascx");
City3 uc = c as City3;
uc.CityID = "SH";
this.PlaceHolder1.Controls.Add(uc);

注:PlaceHolder1是容器,当前页面需要在头部注册信息

<%@ Register src="~/UC/City3.ascx" tagname="City3" tagprefix="uc1" %>

Web用户自定义控件的更多相关文章

  1. mvc 母版页、用户自定义控件

    母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应. 2.其实在ASP.NET MVC中View的aspx与母版页并 ...

  2. C#用户自定义控件(含源代码)-透明文本框

    using System; using System.Collections; using System.ComponentModel; using System.Drawing; using Sys ...

  3. WEB用户访问控制方法

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 一直以来,我对用户/权 ...

  4. LWP::UserAgent - Web user agent class Web 用户agent 类:

    LWPUserAgent: LWP::UserAgent - Web user agent class Web 用户agent 类: 概述: require LWP::UserAgent; my $u ...

  5. 转 Web用户的身份验证及WebApi权限验证流程的设计和实现

    前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权 ...

  6. WPF中添加Winform用户自定义控件

    过程:创建WPF工程->创建Winform用户自定义控件工程->WPF中引用控件->添加到Xaml页面 1.首先在WPF工程的解决方案上右击选择添加新建项目: 选择Windows窗体 ...

  7. [置顶] Web用户的身份验证及WebApi权限验证流程的设计和实现 (不是Token驗證!!!不是Token驗證!!!都是基於用户身份的票据信息驗證!!!)

     转发 http://blog.csdn.net/besley/article/details/8516894 不是Token驗證!!!不是Token驗證!!!都是基於用户身份的票据信息驗證!!! [ ...

  8. Web用户的身份验证及WebApi权限验证流程的设计和实现 asp.net mvc AllowAnonymous 不起作用, asp.net mvc 匿名访问

    原文地址: https://blog.csdn.net/zjlovety/article/details/17095627 前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个 ...

  9. H3C 交换机设置telnet WEB用户

    huwei : local-user admin password cipher @#$@#$ service-type telnet ssh service-type telnet ssh leve ...

随机推荐

  1. url 编码方法

    这个方法用于把 字符串转换成url 的编码 第一个参数是 字符串,第二个参数是 指定的编码(UTF-8 ,GBK, gbk2312...) private string UrlEncode(strin ...

  2. POJ 3621Sightseeing Cows

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9851   Accepted: 3375 Description Farme ...

  3. 清理Win8.1更新冗余的批处理代码

    以下为批处理文件内容,复制到文本文件,另存为.bat文件,以管理员方式运行即可. @echo off title 清理Win8.1更新冗余 color 2e echo 提示:本程序可能需要以管理员方式 ...

  4. Enum枚举类|注解Annotation

    Enum枚举类 ①枚举类和普通类的差别: 使用 enum 定义的枚举类默认继承了 java.lang.Enum 类 枚举类的构造器仅仅能使用 private 訪问控制符 枚举类的全部实例必须在枚举类中 ...

  5. 分页存储过程--From:桌面备份 -> sql2005新功能.docx

    二.以下示例将返回行号为 50 到 60(含)的行,并以 OrderDate 排序. USE AdventureWorks; GO WITH OrderedOrders AS (SELECT Sale ...

  6. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明

    原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...

  7. 3 分钟学会调用 Apache Spark MLlib KMeans

    Apache Spark MLlib是Apache Spark体系中重要的一块拼图:提供了机器学习的模块.只是,眼下对此网上介绍的文章不是非常多.拿KMeans来说,网上有些文章提供了一些演示样例程序 ...

  8. Hash表

    Hash表 Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组.链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字 ...

  9. careercup-排序和查找 11.4

    11.4 设想你有一个20GB的文件,每一行一个字符串.请说明将如何对这个文件进行排序. 解法: 当面试官给出20GB大小的限制时,实际上在暗示些什么.就此题而言,这表明他们不希望你将数据全部载入内存 ...

  10. 利用QT制作我们自己的一个计算器

    有了前面的经验就比较容易创建一个 属于我们自己的计算器了. 一些简单的拖拽就可以实现了. 界面设计部分: 转到槽之后的代码部分: #include "widget.h" #incl ...