Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET Webforms复选框事件发送参数_C#_Asp.net_Checkbox - Fatal编程技术网

C# ASP.NET Webforms复选框事件发送参数

C# ASP.NET Webforms复选框事件发送参数,c#,asp.net,checkbox,C#,Asp.net,Checkbox,我基本上有很多复选框调用相同的函数。为了确定每个函数应该触发的操作,我考虑为将要触发的函数传递一个参数 我的复选框如下所示: <asp:CheckBox ID="checkBoxRegul" runat="server" CssClass="" Visible="false" OnCheckedChanged='checkBoxRegularizarChangedEvent' AutoPostBack="True" /> protected void checkBoxRegular

我基本上有很多复选框调用相同的函数。为了确定每个函数应该触发的操作,我考虑为将要触发的函数传递一个参数

我的复选框如下所示:

<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发送和接收信息

谢谢

对不起,您不能,没有任何财产来存放您想要的东西

您需要将每个复选框映射到不同的事件处理程序,或者在checkboxchangedevent中检查复选框的值

或者。。。正如Tim所说,您可以检查sender类

没有“正确”的答案,这取决于你的需要


希望能有所帮助。

这并不简单,但可行。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" />

一种方法是检查
发送者的ID
,一旦将其转换为正确的类型,就可以执行此操作。根据ID,您可以决定要做什么。不过,我不认为您可以直接将自定义信息放入
EventArgs
参数中。我不确定您在这里做什么,但从我收集的信息来看,您应该在寻找javascript解决方案。
//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);
        }
    
    }

}
<%@ Register src="CustomCheckBox.ascx" tagname="CustomCheckBox" tagprefix="uc1" %>
...
<uc1:CustomCheckBox ID="CustomCheckBox1" runat="server" AutoPostBack="True" OnCheckChanged="CustomCheckBox1_OnCheckChanged" ValueOne="one" ValueTwo="two"/>
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
    }
}