Guybrush Threepwood Geschrieben 26. Oktober 2011 Geschrieben 26. Oktober 2011 Dispose aufruf via foreach fällt aber nicht unter die Regel, Methodenaufrufe sind völlig i.O. Remove ist auch ein Methodenaufruf Zitieren
errox Geschrieben 26. Oktober 2011 Autor Geschrieben 26. Oktober 2011 Remove ist auch ein Methodenaufruf Ja aber der sollte nicht in der foreach durchgeführt werden, weil wie gesagt: Es ändert die Liste. Naja. Jedenfalls möchte ich mich bei allen bedanken. Fazit für die den rest nicht lesen möchten: Ich gebe die Hoffnung auf. Ich habe es auch mit reinen Controls versucht, ohne Properties zu setzen. Das "adden" braucht immer und immer länger. Die ersten paar male gut, aber danach geht einfach nichts mehr. BIS ich das Panel dispose. Ich hab auch bereits gegooglet. Ich werde es durch GDI lösen, ich zeichne meine Controls / Buttons selbst. Trotzdem nochmal allen vielen lieben dank für eure hilfe! Immerhin hab ich gelernt: Kein Dipose in einer foreach UND Controls nicht zu oft zur Laufzeit hinzufügen Besser wie nichts. Danke!!! Zitieren
SilentDemise Geschrieben 27. Oktober 2011 Geschrieben 27. Oktober 2011 Die MSDN hält sich hier ja sehr bedeckt, was mögliche Probleme angeht. Mögliche Seiteneffekte ist mehr als vage. Eine For schleife funktioniert laut der beschreibung ja. Probier die doch erstmal aus. Unabhängig davon: Ich frage mich ernsthaft, wo man in einem praktischen Beispiel soviele Steuerelemente in so kurzer Zeit erzeugen und wieder wegschmeißen muss. Zitieren
Guybrush Threepwood Geschrieben 27. Oktober 2011 Geschrieben 27. Oktober 2011 Wenn du in einer for Schleife über eine Collection iterierst und Elemente aus dieser entfernst musst du aber aufpassen das du keines überspringst. Also am Besten Rückwärtszählen und ggf. das selbe Element 2 mal anpacken oder nach jedem Entfernen den Zähler ensprechend wieder um eins verringern. Zitieren
Sacaldur Geschrieben 27. Oktober 2011 Geschrieben 27. Oktober 2011 oder man erstellt sich eine Kopie der Liste, geht diese durch und entfernt sie während dessen aus der eigentlichen Liste (Liste soll in dem Fall für jede beliebige Auflistung stehen, wie Array, LinkedList etc.) allerdings dürfte das rückwärts durchgehen wohl das Beste sein, was man in dem Fall machen kann dannoch interessiert es hier einige, wofür du denn so viele Buttons benötigst! es gibt garantiert eine Möglichkeit, dein eigentliches Problem (nicht das mit den Buttons) anders (als mit Buttons) zu lösen solange du das eigentlich Problem nicht nennst (und die vielen Buttons sind eine Lösung für dieses Problem, wenn auch nicht die richtige), können wir dir nicht helfen es ist sinnvoll, nicht mit GDI oder GDI+ da ran zu gehen, da du sonst alles neu schreiben musst, was Windows.Forms bereits hergibt (vielleicht nicht ganz alles, aber ausreichend viel) warum ist es beispielsweise nicht möglich, dass ein paar Buttons deaktiviert und wieder aktiviert werden? Zitieren
Gateway_man Geschrieben 27. Oktober 2011 Geschrieben 27. Oktober 2011 Ich denke mal das es eine Art Touchscreen Kassensystem für die Gastronomie oder ähnlich sein kann. Da währen die vielen Buttons eigentlich keine Verwunderung. Und auch das regelmäßige neuaufbauen der Buttons wäre dadurch geklärt. Wir selbst haben ein Kassensystem für die Gastronomie. Da wählt man dann die Speisenkategorie und dann wird für jedes Gericht ein quadratischer Button mit passendem Label erzeugt (natürlich auch groß genug ). und dann eben noch ein Nummernfeld um die Anzahl der bestellten Artikel zu erfassen und ggf. noch die Tischnummer. Ziemlich schlechte Bildqualität, aber so in etwa könnte das dann aussehn. Klick mich lg Gateway Zitieren
Sacaldur Geschrieben 27. Oktober 2011 Geschrieben 27. Oktober 2011 auch etwas derartiges erfordert nicht, dass ständig auf dem gleichen Panel immer wieder Buttons entfernt und hinzugefügt werden müssen besser ist es, die Buttons auf mehrere "Ansichten" (benuzerdefinierte Element, die von beispielsweise Panel abgeleitet sind) zu definieren, die diese Buttons besitzen dann muss man nur noch die entsprechenden Ansichten initialisieren zudem müssen diese ansichten nicht permanent neu initialisiert werden, da es reicht, immer nur die richtige Ansicht einzublenden somit muss man nicht mehr (insgesamt) tausende, sondern nur noch ein paar hundert Buttons erzeugen (und keine mehr entsorgen) ungefähr auf diese Art habe ich mit meinem ehemaligen Lehrgang ein Projekt realisiert (für dieses Design hat unser Dozent gesorgt) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.