Ich bin im C# Syntax nicht der beste und finde gerade nichts im Net dazu, wie kann ich über eine Klasse Items in eine Listbox adden? Vll mit kurzem beispiel wäre sehr nett...
Steuerelement in einer Klasse verwenden
-
- [C#]
- Samagon
-
-
-
Normalerweise ist die Klasse nich dazu da um auf die GUI zuzugreiffen.
Aber das Design überlasse ich dir mal.Du kannst in einer Funktion die ListBox als ref Parameter angeben und so dann darauf zugreiffen.
[CSHARP]public void foo(ref System.Windows.Forms.ListBox _plb) { _plb.Items.Add("foo"); }[/CSHARP] -
Ich habe es mal anders gemacht:
public static SilkProxy MainWindow = new SilkProxy();somit kann ich dann z.b. über SilkProxy.MainWindow.button etc.... etwas machen
sobald ich aber die funktion in eine klasse einbaue bleibt er an der stelle hängen
-
-
In der Klasse
[cs]
public delegate void dInfo(string s);
public event dInfo OnInfo;
[/cs]
und wenn du dann einen Listbox Eintrag hinzufügen willst, einfach
[cs]
OnInfo("Meine Notiz");
[/cs]
aufrufen.Und in der Form Klasse dann
[cs]
meinObjektMeinerKlasse.OnInfo += (hier einfach 2 mal Tab drücken, VS macht den Rest)
[/cs]
dann macht VS eine neue Methode in der du das Event weiterverarbeiten kannst. In dem Event dann einfach
[cs]
listBox1.Invoke((MethodInvoker)delegate
{
listBox1.Items.Add(s);
});
[/cs] -
Wenn du schon so mit Globalen Variabeln herumwurstelst dann bitte richtig.
Du instanzierst MainWindow komplett neu.
Das heisst wenn du dort etwas veränderst, ist dies auf deiner GUI nicht sichtbar.
Du musst also zuerst dein GUI dem Objekt zuweisen."Er bleibt an der Stelle hängen" ist nicht wirklich hilfreich.
Sofern du mehrere Threads hast, könnte das der Fehler sein. Überprüfe die Aktion am besten zuerst auf InvokeRequired, und wenn true dann Invoke das Ganze auch gleich.€: Events wären vielleicht auch noch was für dich.
€2: War wiedermal einer schneller -
OK gut, aber so funktioniert es nun auch nicht und das ist die GUI
public static SilkProxy MainWindow;denn so wie dongi das gemacht hat ist es zu kompliziert da ich mehrere steuerelemente habe
-