Hallo, ich bin neu in C# und bin, so wie es aussieht, mit den Events noch ziemlich auf Kriegsfuß.
Mein Programm besteht aus dem UserControl '
UserControl1', welches mit dem Visual Studio Designer erzeugt wurde und mit zwei Buttons enthält und einer Windows Form '
Form1', in welche das UserControl eingefügt ist. Das abgebildete Programm ist eine stark vereinfachte Version, damit ich leichter verstehe was darin passiert.
Ich möchte, dass wenn einer der Buttons gedrückt wird, die Methode '
DoSomething' in der Klasse Form1 ausgeführt wird.
Nun zu meinem Problem: Wenn ich das Programm laufen lasse und einen der beiden Buttons drücke, dann lande ich zwar in der Methode '
OnEreignis', aber '
Ereignis' hat immer den Wert 'null'.
Seit einigen Tagen durchforste ich schon das Netz nach einer funktionierenden Lösung und habe auch schon unzählige Lösungsansätze ausprobiert, das Richtige war bis jetzt leider nicht dabei. Der Wert blieb immer 'null'.
Was muss ich machen, dass ich hier einen Wert ungleich null bekomme, damit '
DoSomething' angesprungen wird? Kann mir da jemand auf die Sprünge helfen.
Ich möchte mich auf jeden Fall schon mal für Eure Unterstützung bedanken.
Hier mein WinForms:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { uc1.Ereignis += new UserControl1.MyEventHandler(DoSomething); } UserControl1 uc1 = new UserControl1();
private void DoSomething(object source, EventArgs e) { MessageBox.Show("Juhu"); } } |
Hier mein UserControl:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| public partial class UserControl1: UserControl { public delegate void MyEventHandler(object source, EventArgs e); public event MyEventHandler Ereignis; public UserControl1() { InitializeComponent(); }
private void buttonUp_Click(object sender, EventArgs e) { OnEreignis(); }
private void buttonDown_Click(object sender, EventArgs e) { OnEreignis(); }
protected void OnEreignis() { if (Ereignis != null) { DoSomething(this, new EventArgs()); } } } |