在新建项的时候,选择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. C# 基础知识 protected 关键字

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...

  2. IOS 获取屏幕尺寸

    CGRect frame = [[UIScreen mainScreen] bounds];    NSLog(@"frame :%@",frame); 这样输入是null NSL ...

  3. VersionCode和VersionName

    关于apk更新版本的问题   先上结论: Google为APK定义了两个关于版本属性:VersionCode和VersionName,他们有不同的用途. VersionCode:对消费者不可见,仅用于 ...

  4. 在Apache Tomcat 7设置redis作为session store

    在Apache Tomcat 7设置redis作为session store  //输出tomcat控制台日志 root@ubuntu:~# cd /usr/tomcat/apache-tomcat- ...

  5. [Webpack 2] Optimize React size and performance with Webpack production plugins

    You can fine tune several webpack plugins to make your bundle as small as it can be for your specifi ...

  6. 监控mysql索引使用效率的脚本

      SELECT  t.table_schema AS db,  t.table_name   AS tab_name,  s.index_name   AS index_name,  s.colum ...

  7. iOS开发中常用到的加密方式

    1 base64 1.1 简介 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据 ...

  8. 如何去除CISCO交换机中的口令??

    加电后按住交换机前面的那个按钮 灯不闪了以后松手这时交换机会进入switch:模式输入命令 flash然后 dir flash:你会发现有个 config.text 的文件 你的密码和配置都保存在那里 ...

  9. How to fix “The program can’t start because MSVCR110.dll is missing from your computer.” error on Windows

    原文出处 How to fix “The program can’t start because MSVCR110.dll is missing from your computer.” error ...

  10. 最全的ASP.NET开源CMS汇总

    转载:http://www.cnblogs.com/cxd4321/archive/2011/11/16/2250707.html 国内: 1.SiteServer CMS SiteServer CM ...