Hallo, habe folgendes Problem und ihr hoffentlich die Lösung:
Drei Formulare: form1, Parametrisierung, Test_Läuft,
Ergebnis_bestätigen. Das Ziel, das ich verfolge, ist, dass nur noch die
drei forms Parametrisierung, Test_Läuft, Ergebnis_bestätigen zyklisch
aufgerufen werden. Problem: ich die Forms nicht so gesteuert, dass eins
schließt, bevor das andere geöffnet wird.
Form 1 ist das Formular, das von Main Funktion aufgerufen wird.
Form 1 ruft Parametrisierung über Parametrisierung.ShowDialog() auf.
Dieses ruft dann Test_Läuft indirekt über eine Variable auf:
•
1
if(cbxTest_starten.Checked==true)
2
{
3
GlobaleVariablen.Direkt_Start=true;
4
}
Sobald Form Parametrisierung geschlossen wird (über this.close()), gilt
das Event Form1.activated. Dort frage ich die variable ab und rufe
Test_Läuft.showdialog() auf. Aber aus irgendeinem Grund öffnet
test_läuft,während Parametrisierung noch offen ist. das Formular
Parametrisierung zuckt nur einmal kurz, bleibt dann aber im Hintergrund
geöffnet. Und das obwo0hl ich test_läuft indirekt aufrufe.
Vielleicht liegt es einfach daran, dass es in diesem Forum um Fragen
rund um Mikrocontroller und sonstige digitale Elektronik geht.
Irgendwelche PC Desktop-Applikationen sind da "etwas" neben der Spur.
STK500-Besitzer schrieb:> Würdest du bitte Quellcode posten?!
das sind mehrere 100 zeilen Code. das ist zu unübersichtlich. ich
schneide die relevanten sachen raus.
Endlosschleife Winform Formulare schrieb:> das sind mehrere 100 zeilen Code. das ist zu unübersichtlich. ich> schneide die relevanten sachen raus.
Wohl eher "Sachen, die alleine auch nicht funktionieren".
Endlosschleife Winform Formulare schrieb im Beitrag #6373645:
> was soll das jetzt heißem? du hast keine ahnung trollst ein bisschen?
Ich wüsste zumindest in meinem Programm, wo ich mal suchen würde.
"Haltepunkte" im DEBUG-Modus setzen, Variableninhalte angucken.
Einzelschrittmodus ab Breakpoint...
PS: Trollen kann ich auch noch
STK500-Besitzer schrieb:> Ich wüsste zumindest in meinem Programm, wo ich mal suchen würde.> "Haltepunkte" im DEBUG-Modus setzen, Variableninhalte angucken.> Einzelschrittmodus ab Breakpoint...
hab ich gemacht. Die Werte der variablen stimmen alle.
Endlosschleife Winform Formulare schrieb:> private void Parametrisierung_Click(object sender, EventArgs e)> {>> if (cbxTest_starten.Checked == true)> {> GlobaleVariablen.Direkt_Start = true;> }> }
das ist übrigens von mir falsch ausgeschnitten. Event formclosed()
Endlosschleife Winform Formulare schrieb:> private void Parametrisierung_FormClosed(object sender,> FormClosedEventArgs e)> {> if (cbxTest_starten.Checked == true)> {> GlobaleVariablen.Direkt_Start = true;> }> }
also normalerweise wird der Wert erst gesetzt, wenn das Form geschlossen
ist. Trzd ist es noch offen!
Endlosschleife Winform Formulare schrieb:> also normalerweise wird der Wert erst gesetzt, wenn das Form geschlossen> ist. Trzd ist es noch offen!
also wenn ich einen Haltepunkt an den Anfang der Routine setze und in
einzelschritten druchgehe, ist das Formular geöffnet. Ich schließe es
mit this.close()
Endlosschleife Winform Formulare schrieb im Beitrag #6373827:
> was heißt das?
Dass du die Dispose()-Methode aufrufen musst, damit der ganze "Dreck"
("Garbage"), den dein Formular hinbterlassen hat, entsorgt werden kann.
STK500-Besitzer schrieb:> Dass du die Dispose()-Methode aufrufen musst, damit der ganze "Dreck"> ("Garbage"), den dein Formular hinbterlassen hat, entsorgt werden kann.
Heißt das denn, dass keine Vraiblen übergeben werden?
also wenn ich dispose nutze, verschwindet sie tatsächlich. Aber es
ergibt direkt das nächste Problem:Ich kann das Formular nicht wieder
aufrufen
System.ObjectDisposedException: "Cannot access a disposed object.
Endlosschleife Winform Formulare schrieb:> System.ObjectDisposedException: "Cannot access a disposed object.
Du könntest scheinbar das Formular entweder schließen (und dann
disposen) oder ausblenden (wie das geht, weiß ich niczht).
Es gibt aber statt "ShowDialog()" auch noch "Show()".
Einfach mal in deinem C#-Referenzhandbuch nachlesen.
STK500-Besitzer schrieb:> Show()".> Einfach mal in deinem C#-Referenzhandbuch nachlesen.
Show () hat einige Nachteile, die ich umgehen möchte. Ich glaube, jeder
der showdialog verwednet, macht dies um Show zu vermeiden.
STK500-Besitzer schrieb:> ausblenden (wie das geht, weiß ich niczht).
das ist noch ein gedanke. aber dann müsste ich eine menge Events
verändern. Außerdem: wenn es versteckt ist, kann ich es ja nicht wieder
mit showdialog aufrufen. Das heißt, ich müsste hier wieder eine
Laufvariable haben, di9e das koordiniert
Endlosschleife Winform Formulare schrieb im Beitrag #6373898:
> STK500-Besitzer schrieb:>> Niemand außer dir scheint sowas zu brauchen.>> da du das mit so einer überheblichkeit sagst: this.close funktioniert> nicht, bei dispose lässt sich das Formular nicht nochmal öffnen. Die> Lösung verstecken kann kein Ersatz sein
Hallo geht's noch? Du bist überheblich. Merkte was?
Endlosschleife Winform Formulare schrieb im Beitrag #6373912:
> ich bitte um eine Lösung.
Wie wäre es, wenn du dir eine andere (Freizeit-)Beschäftigung suchst?
> Oder vllt eine Bergründung, warum ich mich zwischen zwei Extremen quälen> muss
Andere kommen auch mit dem aktuellen Zustand zurecht.
Was ist so schwer an einem "FormKLasseXYZ FormXYZ = new
FormKLasseXYZ(...);"
zusammen mit einem "FormXYZ.Dispose()?"
Wenn allerdings DEIN Programm so umständlich gebaut ist, dass du sowas
nicht einbauen kannst, brauchst du mehr als eine einfache Lösung.
Glaubst du wirklich dass dir mehr Leute antworten wenn du ständig neue
Threads auf machst, jegliches Lernen verweigerst und die Leute dann
beschimpfst?
Es ist ja jetzt schon so, dass du bewusst in die Irre geführt wirst weil
du dir hier so viele Freunde gemacht hast. Da hilft es auch nichts, dass
die Moderatoren, aus welchen Gründen auch immer, die Hand über dich
halten.
Nach deinem typischen Wochenend-Amoklauf im Forum wirst du morgen immer
noch mit deinem Müll-Code da stehen und hast hier noch mehr Erde
verbrannt.
Hannes J. schrieb:> Es ist ja jetzt schon so, dass du bewusst in die Irre geführt wirst weil> du dir hier so viele Freunde gemacht hast.
Wieso in die Irre?
Also ehrlich. Ich weiß nicht wovon du sprichst. Dies ist mein erster
thread.