Wenn ich dich richtig verstehe hast du einen fixen Satz von Meldungen und keinen beliebigen Freitext und diese potentiellen Meldungen willst du irgendwo verwalten?
Dann bietet sich eine Enumeration an insbesondere auch da sich deine gezeigten Messages eh schon nach Zuständen deiner Anwendung anhören. Zustandssteuerung und Nachrichten lassen sich dann einfach kombinieren.
Um ~lesbaren~ Text zu bekommen kann man den Enum Werten ein Desription Attribut verpassen. Dazu ein passende Extension Method zum auslesen der Description.
Deine Klasse die im Hintergrund die Arbeit macht kann dann einen Event veröffentlichen (nennen wir ihn mal StateChanged) bei dem sich der aktuelle State als Enum in den EventArgs befinden.
Diesen Event dann auf der Form (oder Presenter,Controller etc. je nach Muster) registrieren und den Enum an das userControl übergeben.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| public enum State { Start, [Description("Create Items")] CreateItems, Abort, Loading };
public static class MyExtensions { public static string ToUserFriendlyText(this Enum enumValue) { FieldInfo fi = enumValue.GetType().GetField(enumValue.ToString()); var attr = (DescriptionAttribute)fi.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault();
if (attr != null) return attr.Description; else return enumValue.ToString(); } } |
Übrigens, Gute Besserung an die Listbox mit den chronischen Meldungen
