C# zweite Form öffnen aber Methode der ersten Form weiter ausführen

Soma-web

Cadet 4th Year
Registriert
Apr. 2009
Beiträge
86
Hi CB Community, ich hab ein Problem bei VS2010 C#.
Und zwar will ich während einer Methode in der viele Befehle abgearbeitet werden (in Form1) eine zweite Form_checklist anzeigen lassen und ihr immer wieder übergeben, wenn eine befehlsgruppe funktioniert hat.

In Pseudocode etwa so:
Code:
class Form1{
Form2 checklist = new Form2();
Button1_click(event,obj)
{
//ich habe es mit show und showDialog versucht
//bei show macht er nichtmehr in der Methode weiter und bei Showdialog auch nicht
checklist.show()

BEFEHLE BEFEHLE
checklist.setbefehl1(true)

Befehle BEFEHLE
checklist.setbefehl2(false)

}

}

Und je nach dem ob true oder false an checklist übergeben wird visualisert er mir das in der form checklist.
nur wie stell ich das an, dass er die Befehhle überhaupt weiter verarbeitet sobald cheklist.show ausgeführt wird??

Danke euch
 
Ahhh du meinst beide Methoden also checklist.show und Button_click als Threads laufen lassen ;)
Klingt plausibel!
 
Kann man nen click event überhaupt als thread starten oder mach ich nen "Umweg" über eine neue Methode und im clickevent starte ich nur die beiden threads?
 
Also in diesem Fall versteh ich nicht ganz wozu er Threads nutzen sollte. Mit der Show-Methode der Formklasse oeffnet sich die neue Form nonmodal. Somit sollten die Befehle die danach ausgefuhert werden auch erreicht werden und die Anwendung blockiert nicht.
Funktioniert bei mir auch einwandfrei. Oder ich verstehe dein Problem falsch.
Code:
        private void button1_Click(object sender, EventArgs e)
        {
            Form form2 = new Form();
            form2.Show();

            form2.Text = "Sollte ja laut deiner Aussage nicht erreicht werden. Wird es aber :) ";

        }
 
Du willst also ein Log-Fenster, wenn ich das richtig verstehe?

Mal als alternativer Lösungsansatz, ohne dass man sich um Threads kümmern muss.
1. Eine statische Klasse zum Weiterreichen der Daten erstellen
2. Die Klasse enthält eine Funktion und ein Event, z.B. addNewData(string X) und ein Event namens newDataAvailable(string X)
3. Das Hauptformular ruft jedes mal die Funktion addNewData auf, wenn neue Daten im zweiten Fenster protokolliert werden sollen
4. Das Protokoll-Fenster abonniert von Anfang an das Event newDataAvailable der statischen Klasse
5. In der statischen Klasse wird bei jedem Aufruf von addNewData das Event newDataAvailable ausgelöst
6. Eventuell braucht man im Protokoll-Fenster einen Callback, weil das Event im Hintergrund auch wieder nur ein eigener Thread ist
7. Wenn man will kann man natürlich auch in der Funktion addNewData die ankommenden Daten in eine Datei schreiben lassen

Wäre nur ne Alternativ-Lösung, falls ich die Fragestellung richtig verstanden hab...

EDIT:
Ein zweites Form mit show() öffnen blockiert definitiv nicht, da muss was anderes haken - showDialog() dagegen öffnet ein modales Fenster und wartet iirc bis das Fenster wieder geschlossen wird...
 
Zuletzt bearbeitet: (Nachtrag)

Ähnliche Themen

Zurück
Oben