| 

.NET C# Java Javascript Exception

2
Hallo,

eventuell fehlt mir das grundlegende Verständnis. Aber mein nachfolgenden Code lässt sich nicht ausführen weil Visual Studio meldet dass bei der Eventzuweisung a la new Eventhandler der "Methodennamen fehlt"

Dabei möchte ich einfach eigene Eventargumente mitgeben.

Die wohl fehlerhafte Codezeile wurde hervorgehoben.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1 {
public partial class WebForm1 : System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e) {

var checkBox = new CheckBox();
checkBox.ID = "checker";
checkBox.Text = "Klick mich";

checkBox.CheckedChanged += new EventHandler(checkBox_CheckedChanged(checkBox, new MyEventArgs("AFFE")));

Form.Controls.Add(checkBox);
}
protected void checkBox_CheckedChanged(object sender, MyEventArgs e) {
Console.Write(e.blub);
}
}

public class MyEventArgs: EventArgs {
public MyEventArgs(string blub) {
this.blub = blub;
}
public string blub;
}
}


Was mache ich falsch? Wäre froh um eure Unterstützung.

Danke und Gruss
28.03.2012
redfish 115 1 5
4 Antworten
1
Die einzige Möglichkeit, die ich sehe, um es nahe Deiner existierenden Impleentierung zu realisieren, ist folgende:

Id des Datensatzes in Checkbox.Tag (object property) speichern.
Normales CheckChanged Event verwenden (eigene EventArgs bekommst Du nicht rein).
Im EventHandler "object sender" nach Checkbox casten und das Checkbox.Tag abfragen.
Das ist zwar ziemlich krude, könnte aber funktionieren.
Vielleicht ists besser, Dein Design zu überdenken...

Florian
28.03.2012
ffordermaier 8,4k 3 9
1
Verwende doch lambda Ausdrücke
checkBox.CheckedChanged += (s, e) => Work(checkbox, "Affe");
...
private void Work(object sender, string arg)
{
}


deinem Beispiel nach reicht auch schon
checkBox.CheckedChanged += (s, e) => Console.WriteLine("Affe");
28.03.2012
me 1,1k 2 9
0
Soweit mir bekannt kann man einem bereits bestehenden/definierten Event keine "neuen" EventArgs mitgeben.
Wenn du willst, dass eine Checkbox von dir definierte EventArgs hat, müsstest du eine eigene CheckBox-Klasse erstellen welche von System.Windows.Forms.CheckBox ableitet und dort das entsprechende Event überschreiben. Dann kannst du deine EventArgs einschleusen.

Davon abgesehen:
Was würde es an dieser Stelle überhaupt für einen Sinn machen, noch EventArgs einzu"schleusen"?

//EDIT ich seh grad du bist im System.Web Bereich, dann natürlich nicht von System.Windows.Forms.CheckBox sondern von system.web.ui.webcontrols.checkbox
28.03.2012
Karill Endusa 1,5k 1 9
0
Eine detaillierte Erklärung wäre zu umfangreich. Aber aus Performance Gründen muss ich jede Interaktion mit dynamisch generierten Checkboxen abfangen um diese schonmal vorzuspeichern. Für diese Funktion benötige ich aber die ID des jeweiligen Datensatzes, welcher ich gerne über EventArgs mitgegeben hätte.
28.03.2012
redfish 115 1 5

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH