Endlosschleife Winform Formulare

Gast #6373212
Lesenswert?

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.
Gast #6373443
Lesenswert?

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.
Gast #6373470
Lesenswert?

1
  
2

3

4

5

6
// Form 1 ruft Form Parametrisierung auf
7

8
     private void btnINIT_Test_Click(object sender, EventArgs e)
9
        {
10

11
            
12
            Para.ShowDialog();
13
        }
14

15
// in Parametrisierung wird Variable gesetzt, sodass test_läuft direkt aufgerufen wird, wenn Form 1 Activated
16
      private void Parametrisierung_Click(object sender, EventArgs e)
17
        {
18

19

20
            if (cbxTest_starten.Checked == true)
21
            {
22
                GlobaleVariablen.Direkt_Start = true;
23
            }
24
        }
25

26

27
private void Form1_Activated(object sender, EventArgs e)
28
        {
29
            if (GlobaleVariablen.Direkt_Start == true) 
30
             TLäuft.ShowDialog();
31
            }

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.
Beitrag #6373645 wurde von einem Moderator gelöscht.
Gast #6373659
Lesenswert?

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
Gast #6373723
Lesenswert?

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()
1
        private void Parametrisierung_FormClosed(object sender, FormClosedEventArgs e)
2
        {
3
            if (cbxTest_starten.Checked == true)
4
            {
5
                GlobaleVariablen.Direkt_Start = true;
6
            }
7
        }
Beitrag #6373822 wurde von einem Moderator gelöscht.
Beitrag #6373827 wurde von einem Moderator gelöscht.
Gast #6373829
Lesenswert?

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.
Gast #6373844
Lesenswert?

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.
Gast #6373850
Lesenswert?

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
Beitrag #6373898 wurde von einem Moderator gelöscht.
Gast #6373905
Lesenswert?

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?
Beitrag #6373912 wurde von einem Moderator gelöscht.
Gast #6373935
Lesenswert?

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.
Beitrag #6373944 wurde von einem Moderator gelöscht.
#6373986
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren