Es ist nicht einfach, aber es ist machbar. EventArgs (e) kann zusätzliche Informationen nicht direkt speichern, Sie können jedoch ein benutzerdefiniertes Steuerelement mit einem benutzerdefinierten Ereignis erstellen, das zusätzliche Informationen enthalten kann.
Schritt 1: Erstellen Sie eine CheckBoxEventArgs
Klasse, die von EventArgs
() erbt. Fügen Sie öffentliche Eigenschaften hinzu, um die benötigten Informationen zu speichern.
public class CheckBoxEventArgs: EventArgs
{
public string ValueOne { get; set; }
public string ValueTwo { get; set; }
}
Schritt 2: eine benutzerdefinierte .ascx Steuerung zu einem Projekt (CustomCheckBox.ascx
) hinzufügen. Fügen Sie ein Kontrollkästchen zum HTML hinzu.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomCheckBox.ascx.cs" Inherits="CustomControls.CustomCheckBox" %>
<asp:CheckBox ID="chkCheckBox" runat="server" OnCheckedChanged="chkCheckBox_CheckedChanged" ValueOne="one" ValueTwo="two" />
die Code-Behind-Passen Sie wie folgt vor:
Eigenschaften
- Definieren Sie die CheckChanged Ereignis mit einem benutzerdefinierten Eventhandler
- hinzufügen die benutzerdefinierten Checkbox
Werte speichern
- eine Text Eigenschaft hinzufügen und den Wert passieren Zum Kontrollkästchen Text
Reagieren Sie das CheckChanged-Ereignis und erhöhen Sie Ihr benutzerdefiniertes Ereignis
//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);
}
}
}
Schritt 3: Fügen Sie die CustomCheckBox.ascx zu Ihre Seite und registrieren Sie das OnCheckChanged-Ereignis.
<%@ Register src="CustomCheckBox.ascx" tagname="CustomCheckBox" tagprefix="uc1" %>
...
<uc1:CustomCheckBox ID="CustomCheckBox1" runat="server" OnCheckChanged="CustomCheckBox1_OnCheckChanged" />
Add Code an der Code-Behind-Seite zu Ihrem benutzerdefinierten checkchanged Ereignisse, zu reagieren und die benutzerdefinierten Werte verwenden (sie direkt von dem customEventArgs zur Verfügung, die Ihr erstellt hat (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
}
}
Eine Möglichkeit, tue dies, um die ID des Absenders zu überprüfen, die du tun könntest, wenn du sie in den richtigen Typ umgewandelt hast. Anhand der ID können Sie dann bestimmen, was zu tun ist. Ich glaube nicht, dass Sie benutzerdefinierte Informationen direkt in das 'EventArgs'-Argument einfügen können. – Tim
Ich bin mir nicht sicher, was Sie hier tun, aber aus dem, was ich erfahre, sollten Sie in eine Javascript-Lösung suchen. – prospector