2 Stimmen

Dialog wird aufgrund einer Schleife nach Verwendung der Methode .Show() in C# nicht richtig angezeigt

Es tut mir leid, wenn es so aussieht, als würde ich dieselbe Frage stellen. Das Problem ist ähnlich, aber ich finde jedes Mal mehr und mehr über das Problem heraus. Also vielen Dank im Voraus für all die Hilfe. Ich weiß das sehr zu schätzen :D

Ich möchte ein Formular/Dialog unter einer bestimmten Bedingung innerhalb einer Schleife anzeigen. Mein Problem ist, dass ich dieses Codesegment in meinem Programm erstellt habe und wenn ich meine Bedingung erfülle und mein Formular zeige, wird es nicht richtig angezeigt. Ich habe das Problem auf die Schleife eingegrenzt, da es an anderen Stellen im Programm gut funktioniert. Aber immer, wenn ich versuche, die Show-Methode auf meinem Formular aufzurufen, bevor die Schleife beginnt oder innerhalb der Schleife, wird es nicht richtig angezeigt. Speziell mein Formular/Dialog hat im Moment nur ein einziges Label. So sieht es aus, wenn ich die Show-Methode in meinem Formular/Dialog aufrufe:

  • Es ist nicht möglich, mit dem Formular/Dialog zu interagieren (d. h. ihn zu verschieben oder mit dem "X" zu schließen) - Das Maussymbol zeigt an, dass es funktioniert, wenn Sie den Mauszeiger über das Formular/den Dialog bewegen.
  • Der Hintergrund wird nicht geladen - Der Rahmen und die Titelleiste/Kopfzeile des Dialogs werden geladen, der Hintergrund jedoch nicht. In der Tat ist es nicht dort zu starten, so dass Sie durch das Formular/Dialog sehen können. Wenn Sie irgendwo klicken, wird der Hintergrund schwarz.
  • Die Beschriftung wird nicht geladen - Dies hängt wahrscheinlich mit dem Hintergrund zusammen, aber man kann die Beschriftung nicht sehen oder einen Umriss/Schatten, wo sie sein sollte.

Hier ist mein Codesegment:

    private void ConnectSequence(object sender, DoWorkEventArgs e)
    {
        EstablishingConnection ourECF = new EstablishingConnection();

        // Loop till connected
        while (!this.ourCC.Connected)
        {
            this.ourCC.InitializeConnection();

            // If we didn't connect and ourECF isn't already shown then show it
            if (!this.ourCC.Connected && false == ourECF.Visible)
            {
                ourECF.Show();
            }
        }

        ourECF.Dispose();
    }

Ich versuche Folgendes zu tun:

  • Schleife, bis eine Verbindung hergestellt ist
  • Wenn der erste Verbindungsversuch fehlschlägt, wird ein Formular/Dialog angezeigt, das den Benutzer darauf hinweist, dass versucht wird, eine Verbindung herzustellen.

Der Code selbst funktioniert hervorragend. Wenn ich den Server ausschalte und die Client-Anwendung ausführe, wird das Formular/Dialogfeld angezeigt, das nicht richtig funktioniert. Wenn ich den Server wieder einschalte, wird die Schleife beendet und das Formular/Dialogfeld wird entsorgt. Derzeit habe ich einen BackgroundWorker, der ConnectSequence aufruft, da ich dachte, dies würde mein Problem lösen.

Was ich bis jetzt ausprobiert habe:

  • Verwendung von Threads (System.Threads & BackgroundWorker)
  • Die Eigenschaft .Visible auf true setzen (.Show tut dies, aber wir haben es ausprobiert)
  • Ich instanziierte unsereECF und rief sie an so vielen verschiedenen Stellen auf, wie ich finden konnte, um zu sehen, ob ich einen Ausweg finden konnte.

Aber letztendlich funktioniert es wegen dieser Schleife nicht. Und ich habe keine Ahnung, warum. Für jede Hilfe wäre ich sehr dankbar. Ich bin so dankbar für alle Ihre Hilfe :D

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X