2016-06-24 10 views
-2

ich eine Lade Form in FunktionC# winform Ladebildschirm

private async void Test() 
{ 
    // 1, show loading form 

    await DoTest(); 

    //2, close loading form 
} 

die Lade Form müssen hinzufügen möchten das Hauptformular blockieren, zunächst, ich versuche, die Form ShowDialog(), laufen, aber es wird der Stopp folgende Funktion

Was ist die beste Idee, dies zu tun?

Meine letzte Lösung:

private async void Test() 
{ 
    // 1, show loading form 
    var loadingScreen = new LoadingForm(); 
    Task.Factory.StartNew(delegate 
    { 
     Invoke((Action)delegate 
     { 
      loadingScreen.ShowDialog(App.Views.Forms.RobotActiveView); 
     }); 
    }); 

    await DoTest(); 

    //2, close loading form 
    Invoke((Action)delegate 
    { 
     loadingScreen.Close(); 
    }); 
} 
+0

ist der ganze Punkt der Ladeform, um Benutzerinteraktion zu verhindern? –

+0

@AlexW ja, als die Download-Funktion, Laden von Daten und so weiter ... – CAM

+0

http://StackOverflow.com/A/393870/366904 –

Antwort

1

anzeigen Lade Form und aktuelle Form deaktivieren.

this.Enabled = false; 

var loadingForm = new LoadingForm(); 
loadingForm.Show(); 

... 

loadingForm.Close(); 

this.Enabled = true; 
+0

Gute Idee, gibt mir eine Inspiration, aber mein Programm ist MVP, also werde ich versuchen, das Formular bei Presenter zu deaktivieren. – CAM