zoukankan      html  css  js  c++  java
  • 用户控件(UserControl) 使用事件

    用户控件上有一个下拉式菜单(DropDownList)和一个Button按钮,想实现选择下拉式菜单并点按钮,它会把下拉式菜单选中的Text和value分别赋值给aspx页面的Hyperlink的Text和NavigateUrl。

    实现方法应该很多,此次,Insus.NET使用了委托(delegate)和事件(event)来实现。首先看看效果演示:

    InsusEventArgs.cs:

    InsusEventArgs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    /// <summary>
    /// Summary description for InsusEventArgs
    /// </summary>
    namespace Insus.NET
    {
        public class InsusEventArgs : EventArgs
        {
            private string _Text;

            public string Text
            {
                get
                {
                    return _Text;
                }
                set
                {
                    _Text = value;
                }
            }
            private string _Url;

            public string Url
            {
                get
                {
                    return _Url;
                }
                set
                {
                    _Url = value;
                }
            }

            public InsusEventArgs(string text, string url)
            {
                this._Text = text;
                this._Url = url;
            }
        }
    }

    用户控件InsusUserControl.ascx:

    InsusUserControl.ascx
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="InsusUserControl.ascx.cs"
        Inherits
    ="InsusUserControl" %>
    Web site navigate<br />
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Text="Insus.NET blog" Value="http://insus.cnblogs.com"></asp:ListItem>
        <asp:ListItem Text="Microsoft" Value="http://www.microsoft.com"></asp:ListItem>
        <asp:ListItem Text="Google" Value="http://www.google.com"></asp:ListItem>
    </asp:DropDownList>
    <br />
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Transform" />

    InsusUserControl.ascx.cs:

    InsusUserControl.ascx.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Insus.NET;

    public partial class InsusUserControl : System.Web.UI.UserControl
    {
        //宣告一个委托,注意一下另一个参数是使用InsusEventArgs
        public delegate void TransformProgress(object sender, InsusEventArgs e);

        //宣告一个事件
        public event TransformProgress Transform;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //如果下拉式菜单什么都不选时,return
            if (this.DropDownList1.SelectedIndex == -1return;

            string text = this.DropDownList1.SelectedItem.Text;
            string url = this.DropDownList1.SelectedItem.Value;

            //实现事件
            this.Transform(thisnew InsusEventArgs(text, url));
        }
    }

     网页Default.aspx:

    Default.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <%@ Register Src="InsusUserControl.ascx" TagName="InsusUserControl" TagPrefix="uc1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <uc1:InsusUserControl ID="InsusUserControl1" runat="server" OnTransform="InsusUserControl1_Transform" />
        </>
        <asp:HyperLink ID="HyperLink1" runat="server"></asp:HyperLink>
        </form>
    </body>
    </html>

    Default.aspx.cs:

    Default.aspx.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Insus.NET;

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

        }

        protected void InsusUserControl1_Transform(object sender, InsusEventArgs e)
        {
            this.HyperLink1.Text = e.Text;
            this.HyperLink1.NavigateUrl = e.Url;
        }
    }
  • 相关阅读:
    多重背包POJ1276不要求恰好装满 poj1014多重背包恰好装满
    哈理工1053完全背包
    求最小公倍数与最大公约数的函数
    Bus Pass ZOJ 2913 BFS 最大中取最小的
    POJ 3624 charm bracelet 01背包 不要求装满
    HavelHakimi定理(判断一个序列是否可图)
    z0j1008Gnome Tetravex
    ZOJ 1136 Multiple BFS 取模 POJ 1465
    01背包 擎天柱 恰好装满 zjut(浙江工业大学OJ) 1355
    zoj 2412 水田灌溉,求连通分支个数
  • 原文地址:https://www.cnblogs.com/insus/p/2251314.html
Copyright © 2011-2022 走看看