这并不简单,但它是可行的。 EventArgs(e) 不能直接存储附加信息,但是可以创建一个自定义控件,自定义事件可以包含附加信息。
第 1 步:创建一个继承自 EventArgs(CheckBoxEventArgs.cs) 的 CheckBoxEventArgs 类。添加公共属性以保存您需要的信息。
public class CheckBoxEventArgs: EventArgs
{
public string ValueOne { get; set; }
public string ValueTwo { get; set; }
}
第 2 步:将自定义 .ascx 控件添加到您的项目 (CustomCheckBox.ascx)。向 HTML 添加一个复选框。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomCheckBox.ascx.cs" Inherits="CustomControls.CustomCheckBox" %>
<asp:CheckBox ID="chkCheckBox" runat="server" OnCheckedChanged="chkCheckBox_CheckedChanged" AutoPostBack="True" />
自定义代码隐藏如下:
- 使用自定义 EventHandler 定义 CheckChanged 事件
- 添加属性以存储自定义复选框值
- 添加一个文本属性并将值传递给复选框文本
- 响应 CheckChanged 事件并引发您的自定义事件
//CustomCheckBox.cs
public partial class CustomCheckBox : System.Web.UI.UserControl
{
public event EventHandler<CheckBoxEventArgs> CheckChanged;
public string ValueOne { get; set; }
public string ValueTwo { get; set; }
public string Text
{
get { return chkCheckBox.Text; }
set { chkCheckBox.Text = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void chkCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (CheckChanged != null)
{
var args = new CheckBoxEventArgs()
{
ValueOne = this.ValueOne,
ValueTwo = this.ValueTwo
};
CheckChanged(this, args);
}
}
}
第 3 步:将 CustomCheckBox.ascx 添加到您的页面并注册 OnCheckChanged 事件。
<%@ Register src="CustomCheckBox.ascx" tagname="CustomCheckBox" tagprefix="uc1" %>
...
<uc1:CustomCheckBox ID="CustomCheckBox1" runat="server" AutoPostBack="True" OnCheckChanged="CustomCheckBox1_OnCheckChanged" ValueOne="one" ValueTwo="two"/>
将代码添加到代码隐藏页面以响应您的自定义 checkchanged 事件,并使用自定义值(它们可直接从您创建的 customEventArgs (e) 中获得)
public partial class PageOne : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void CustomCheckBox1_OnCheckChanged(object sender, CheckBoxEventArgs e)
{
var val1 = e.ValueOne;
var val2 = e.ValueTwo;
//use custom values
}
}