Discussion:
EventHandler mit zusätzlichem Parameter
(zu alt für eine Antwort)
Alexander Richter
2010-04-20 14:00:07 UTC
Permalink
Hallo,
ich habe einen Timer erzeugt.

Timer timer = new Timer();
timer.Tick += new EventHandler (Timer_Tick);

private void Timer_Tick(object sender, EventArgs e) {
//
}

Ich will dem EventHandler einen zusätzlichen Parameter übergeben.
timer.Tick += new EventHandler (Timer_Tick (isResult));

private void Timer_Tick(object sender, EventArgs e, bool isResult) {
//
}

Wie kann ich den zusätzlichen Parameter mit übergeben?


Alexander
Herfried K. Wagner [MVP]
2010-04-20 14:30:25 UTC
Permalink
Post by Alexander Richter
ich habe einen Timer erzeugt.
Timer timer = new Timer();
timer.Tick += new EventHandler (Timer_Tick);
private void Timer_Tick(object sender, EventArgs e) {
//
}
Ich will dem EventHandler einen zusätzlichen Parameter übergeben.
timer.Tick += new EventHandler (Timer_Tick (isResult));
private void Timer_Tick(object sender, EventArgs e, bool isResult) {
//
}
Wie kann ich den zusätzlichen Parameter mit übergeben?
Falls es sich um die vordefinierte 'Timer'-Klasse handelt, gar nicht.
Andernfalls könntest Du einen eigenen von 'EventArgs' abgeleiteten Typ
erstellen und im Ereignis 'Tick' Deiner eigenen 'Timer'-Klasse den
Parameter 'e' mit diesem Typ deklarieren. Der Wert kann in der von
'EventArgs' abgeleiteten Klasse in einer Eigenschaft gespeichert werden.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
FrankDzaebel
2010-04-20 16:00:38 UTC
Permalink
Hallo Alexander,
Post by Alexander Richter
ich habe einen Timer erzeugt.
Timer timer = new Timer();
timer.Tick += new EventHandler (Timer_Tick);
Ich will dem EventHandler einen zusätzlichen Parameter übergeben.
[...] Wie kann ich den zusätzlichen Parameter mit übergeben?
ok, Du könntest einen benutzerdefinierten EventHandler
benutzen:

[EventArgs-Klasse (System)]
http://msdn.microsoft.com/de-de/library/system.eventargs.aspx
(siehe Klasse FireEventArgs)

Aber es ginge auch eine simple Eigenschaft in
einer eigenen Timer-Klasse (und andere Verfahren).
Zum Beispiel:

public Form1()
{
InitializeComponent();
timer = new MyTimer("mein Parameter");
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
timer.Enabled = true;
}

void timer_Tick(object sender, EventArgs e)
{
Console.WriteLine(timer.MeinParameter);
}

MyTimer timer;

class MyTimer : System.Windows.Forms.Timer
{
public string MeinParameter { get; set; }
public MyTimer(){}
public MyTimer(string parameter) : this()
{
MeinParameter = parameter;
}
}
_____________


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Loading...