我基本上有很多复选框调用相同的函数。为了确定每个操作应该触发的操作,我正在考虑为将要触发的函数传递一个参数。
我的复选框是这样的:
<asp:CheckBox ID="checkBoxRegul" runat="server" CssClass="" Visible="false" OnCheckedChanged='checkBoxRegularizarChangedEvent' AutoPostBack="True" />
我的功能是这样的:
protected void checkBoxRegularizarChangedEvent(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;
}
如何通过 EventArgs 发送和接收信息?
谢谢!
最佳答案
这并不简单,但它是可行的。 EventArgs(e) 不能直接存储附加信息,但您可以使用可包含附加信息的自定义事件创建自定义控件。
第 1 步:创建一个继承自 EventArgs
的 CheckBoxEventArgs
类 (CheckBoxEventArgs.cs
)。添加公共(public)属性来保存您需要的信息。
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
}
}
关于c# - ASP.NET Webforms 复选框事件发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306474/