`
pcajax
  • 浏览: 2163402 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用户控件事件使用delegate

阅读更多

用户控件事件使用delegate

1.在我们写一个用户控件时需要考虑到重用得问题,如果控件中包含按钮事件,

我们不可能将点击事件写到控件里,而是我们想吧事件处理得过程写在

调用控件的页面中,这是该怎么处理呢?

我的做法时使用delegate来实现这个功能!

具体做法如下:
下面是控件的html部分
 1<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctlForm.ascx.cs" Inherits="ctlForm" %>
 2<table>
 3    <tr>
 4        <td style="width: 100px">
 5            name</td>
 6        <td style="width: 100px">
 7            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
 8    </tr>
 9    <tr>
10        <td style="width: 100px">
11            sex</td>
12        <td style="width: 100px">
13            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
14    </tr>
15    <tr>
16        <td style="width: 100px">
17        </td>
18        <td style="width: 100px">
19            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="测试" /></td>
20    </tr>
21</table>
22

控件的cs部分
 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12public partial class ctlForm : System.Web.UI.UserControl
13{
14    protected void Page_Load(object sender, EventArgs e)
15    {
16
17    }

18
19    public delegate void ClickHander();
20
21    public ClickHander MyClickHandler = null;
22
23    public void Button1_Click(object sender, EventArgs e)
24    {
25        if (MyClickHandler != null)
26        {
27            MyClickHandler();
28        }

29    }

30}

31


我们调用这个控件的页面写法如下:
 1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testForm.aspx.cs" Inherits="testForm" %>
 2
 3<%@ Register Src="ctlForm.ascx" TagName="ctlForm" TagPrefix="uc1" %>
 4
 5<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 6
 7<html xmlns="http://www.w3.org/1999/xhtml" >
 8<head runat="server">
 9    <title>无标题页</title>
10</head>
11<body>
12    <form id="form1" runat="server">
13    <div>
14        <uc1:ctlForm ID="CtlForm1" runat="server" />
15    
16    </div>
17    </form>
18</body>
19</html>
20
调用控件的cs代码如下

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12public partial class testForm : System.Web.UI.Page
13{
14    protected void Page_Load(object sender, EventArgs e)
15    {
16        CtlForm1.MyClickHandler = new ctlForm.ClickHander(this.Test);
17    }

18
19    public void Test()
20    {
21        Response.Write("ok");
22    }

23
24    
25}

分享到:
评论

相关推荐

    在qt的MVC模式中,运用控件在delegate中显示的方法

    Delegate允许我们自定义每个单元格的显示方式,包括使用基本的文本、图像,甚至是复杂的自定义控件。 **3. 使用Delegate显示控件** Qt提供了一个叫做QStyledItemDelegate的基类,用于创建自定义的Delegate。我们...

    YY用户控件中定义事件使用说明

    下面将详细介绍如何在YY用户控件中定义和使用事件。 1. 创建用户控件: 首先,你需要在Visual Studio或其他.NET开发环境中创建一个新的用户控件项目。在项目中右键点击,选择“添加”-&gt;“新建项”,然后选择“用户...

    NET自定义控件事件开发

    5. **事件处理程序**:在使用自定义控件的页面或用户控件中,通过`+=`运算符订阅事件并提供事件处理函数: ```csharp myCustomControl.MyCustomEvent += new EventHandler(MyCustomEventHandler); ``` 然后定义...

    C# 用户控件编写实例

    4. 事件订阅与处理:在主窗体中订阅用户控件的`Closed`事件,并提供相应的处理函数。 以上就是"C# 用户控件编写实例"的主要内容,通过这个实例,你可以掌握如何利用C#创建自定义控件以及处理事件,提升你的Windows...

    用户控件的基本用法(属性、方法、事件、委托)

    在实际项目中,用户控件的属性、方法、事件和委托的合理使用,可以极大地提高代码的复用性和可维护性。通过创建用户控件,开发者可以构建出复杂而定制化的界面元素,同时保持代码的清晰和结构化。在设计用户控件时,...

    Asp.Net为用户控件添加属性和事件

    在页面中使用这个用户控件时,可以像使用其他Asp.Net控件一样,通过`&lt;uc1:LogInOutControl ID="LoginCtrl" runat="server" Lg="Chinese" /&gt;`的方式添加到页面上。同时,可以在页面的后端代码中订阅`LogInOutClick`...

    C# 自定义控件的属性和添加事件

    本文将深入探讨如何创建自定义控件、添加属性以及为它们添加事件,以提升软件界面的交互性和用户体验。 首先,我们要了解什么是自定义控件。在Windows Forms或WPF应用中,自定义控件是通过对现有控件进行继承或从`...

    C#由浅至深深度解析Delegate委托与Event事件

    这种模式在许多场景下都非常有用,例如UI控件响应用户交互、多线程通信等。 #### 示例:使用事件实现简单的通知机制 假设有一个`Notifier`类,它需要在某些情况下通知外部对象: ```csharp public class Notifier {...

    VB.net 事物委托,多控件使用同一事件源码实例

    在VB.NET编程中,有时我们需要让多个控件共享同一个事件处理程序,以简化代码和提高效率。本实例将深入探讨如何使用VB.NET的事件委托来实现这一目标,特别是在Windows Forms应用中。首先,理解事件和委托是关键。 ...

    QT 自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现

    通过这个项目,你不仅能够掌握基本的QT控件使用,还能深入理解Model/View/Delegate架构,这对于任何高级的QT开发都是必不可少的。这个"viewmodeldelegateTest-a"工程代码将提供实际的示例,帮助你巩固理论知识并提升...

    iOS基本控件的使用

    每个控件都有自己的属性和方法,通过组合使用,可以创建各种复杂的用户界面。在实际项目中,还需要考虑控件的响应式设计,以适应不同屏幕尺寸和设备方向。同时,合理运用Auto Layout和Size Classes能够确保界面在...

    c#子线程操作UI控件的简单委托 包含带参数和不带参数源码

    在.NET框架中,C#是一种常用的编程...总之,通过合理使用委托、`Invoke`或`BeginInvoke`,我们可以安全地在子线程中操作UI控件,提高程序的响应性和用户体验。在实际开发中,应根据具体需求选择合适的跨线程操作方式。

    用Delegate设计控件,DateDelegate.zip

    在Qt中,Delegate主要用于控制控件(如表格视图中的单元格)如何显示数据和处理用户输入。它们是QAbstractItemDelegate的子类,通过重写特定的方法来实现自定义功能。例如,`paint()`方法用于绘制控件的外观,`...

    iOS常用控件的使用

    - 设置 `delegate` 属性来接收用户的选择事件。 - 通过实现 `datePickerValueChanged:` 方法来监听日期和时间的变化。 #### UIActionSheet **UIActionSheet** 类似于 `UIAlertView`,但它通常用于提供一系列选项...

    控件的使用代码完整版本.7z

    在iOS开发中,控件(Controls)是构建用户界面(UI)的重要组成部分。这些控件允许用户与应用程序进行交互,例如按钮、文本框、滑块、开关等。本压缩包"控件的使用代码完整版本.7z"很可能包含了一系列有关iOS控件...

    delegate 使用 xcode iOS

    `UITableView`是一个展示列表数据的控件,经常需要实现数据源(datasource)和代理(delegate)方法,以便填充数据、处理用户交互等。例如,通过实现`UITableViewDataSource`和`UITableViewDelegate`协议,你可以...

    控件的使用功能ios源码.rar

    10. **Delegate和DataSource**:许多控件(如UITableView)使用代理(Delegate)和数据源(DataSource)协议来传递信息和数据。开发者需要实现这些协议的方法以完成具体功能。 11. **手势识别**:iOS提供了一系列的...

    窗体与用户窗体相互传值和钩子使用.7z

    2. **事件**:用户控件可以引发事件,父窗体可以订阅这些事件并接收控件传递的数据。 3. **接口**:如果需要更复杂的通信,可以定义一个接口让控件实现,然后父窗体通过这个接口与控件交互。 接下来,我们讨论...

    ASP.NET2.0服务器控件开发之实现事件

    总结,ASP.NET 2.0服务器控件的事件机制提供了强大的功能,允许开发者构建高度可定制的用户界面组件。通过继承和创建自定义事件,可以实现复杂的业务逻辑和交互效果。理解事件的声明、处理、以及与控件生命周期的...

    C#控件委托类库

    在C#编程中,委托(Delegate)是一种强大的工具,它允许我们传递方法作为参数,或者将多个方法连接在一起形成事件处理链。这个“C#控件委托类库”显然是一个自定义开发的类库,目的是为了方便在进行GUI(图形用户...

Global site tag (gtag.js) - Google Analytics