Frage

Ich habe eine C# Windows Forms -Anwendung. Die Art und Weise, wie ich es derzeit eingerichtet habe, wenn Form1_Load () es ausführt, überprüft es auf wiedergerettete Daten, und wenn es einige findet, wird der Benutzer aufgefordert, wenn er diese Daten öffnen möchte. Wenn das Programm ausgeführt wird, funktioniert es in Ordnung, aber das Nachrichtenfeld wird sofort angezeigt und das Hauptprogrammformular (Form1) wird erst nach dem Klicken des Benutzers auf Ja oder Nein angezeigt. Ich möchte, dass das Form1 zuerst und dann die Eingabeaufforderung des Nachrichtenfelds auftaucht.

Um dieses Problem zu umgehen, bevor ich einen Timer in meinem Formular erstellt habe, startete der Timer in der Form1_Load () -Methode und führte dann die Eingabeaufforderung für Check- und Benutzer im ersten Timer Tick -Ereignis durch. Diese Technik löst das Problem, sieht aber so aus, als würde es einen besseren Weg geben.

Habt ihr bessere Ideen?

Bearbeiten: Ich denke, ich habe auch einen Hintergrundarbeiter verwendet, um etwas Ähnliches zu tun. Es scheint nur ein bisschen doof, alle Mühe zu machen, die Methode aufgerufen zu haben, um auf den Formulm und all diesen Mist zurückzukehren, nur um ein paar Millisekunden verzögert zu haben!

War es hilfreich?

Lösung

Ich würde Form1_SHOWN () verwenden

Andere Tipps

Verwenden Sie das Gezeigt Veranstaltung. Es scheint dem zu passen, was Sie brauchen, und wird nur das erste Mal angezeigt, dass das Formular angezeigt wird.

Form f1 = new Form();
f1.Shown += new EventHandler(f1_Shown);

public void f1_Shown(object sender, EventArgs e)
{
   // Show dialog in here
}

Versuchen Sie das "gezeigte" Ereignis:

Form.Show Event

  • Die Verwendung von windows.forms.timer ist eine gute, stabile, bekannte und leicht verständliche Technik, um das zu tun, was Sie wollen. Ich würde andere Timerobjekte vermeiden.

  • Die Formen Shown Die Veranstaltung funktioniert gut.

  • Überlasten / überschreiben die Show Methode. (Meine bevorzugte Technik für eine größere Kontrolle.) Bei dieser Methode würde ich die erforderliche Überprüfung durchführen. Wenn ich fertig war, rufe ich das an base.Show Methode, dann eine andere Verarbeitung wie Nachrichtenfelder, Eingabeaufforderungen, Protokollierung oder was auch immer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top