Zuerst ich benutze VS2005 und C# 2.0.C# 2.0-Generika: Wie man ein Action-Objekt mit Null-Parameter
Ich versuche eine Combobox Text Eigenschaft aus dem SelectedIndexChanged Ereignis zu setzen. Von einer anderen thread hier auf Stackoverflow wurde dies auf folgende Weise vorgeschlagen, getan:
BeginInvoke(new Action(() => someCombobox.Text = "x"));
Nun, zunächst einmal diese gibt für mich einen Compiler-Fehler. Ich glaube, das liegt daran, dass sich das Action-Objekt in den beiden Sprachspezifikationen anders verhält. In C# 2.0 scheint das Action-Objekt die Struktur <T>
in allen Deklarationen zu benötigen. Vielleicht liege ich falsch, aber ich hätte das gern geklärt.
Was Arbeit tut, ist der folgende:
BeginInvoke(new Action<string>(delegate { someCombobox.Text = "x"; }), new object[] { "" });
Es ist jedoch nur für mich sehr seltsam scheint, dass ich mit einem Typ-Parameter die Aktion definieren bezwecken (vor allem, da ich bin nicht die Absicht hat übergeben Sie irgendwelche Parameter)! Irgendwie würde das Entfernen dieses Parameters das leere neue Objekt [] überflüssig machen, was ich will.
Kann jemand mir helfen, den oben genannten Anruf zu vereinfachen?
Ist schließlich garantiert, dass BeginInvoke nach dem SelectedIndexChanged beendet und damit die Texteigenschaft der Combobox mit dem richtigen Text aktualisiert?
Ich würde wirklich gerne die Antworten auf diese Fragen zu lernen.
Der Kompilierungsfehler ist wegen des Lambda-Ausdrucks. Lambdas sind neu in C# 3.0 und sind eine Kurzform der Syntax für die Delegatenerstellung. –