Ich hab unter anderem ein Button in Form. Wenn dieser gedrückt wird startet im Hintergrund eine Oracle-Abfrage, die ein Moment dauert und das Ergebnis anschließend in Form2 angezeigt wird. Um dem Nutzer nicht den Eindruck zu vermitteln, dass das Programm hängt möchte ich die Rechenzeit visualisieren.
Ein ProgressBar wird wohl nicht möglich sein...
Gibt es eine Möglichkeit den Zeitpunkt abzufangen, wenn Form2 am Bildschirm erscheint?
Viele Grüße
Rico
Hallo Rico913
Du kannst dich einfach an die entsprechenden Events hängen:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/order-of-events-in-windows-forms
Gruß
Alf
Danke dir!
Ich hab es jetzt so:
Form_Wait frm_Wait = new Form_Wait();
private void Form_ProLayer_Load(object sender, EventArgs e)
{
frm_Wait.ShowDialog();
......
}
private void Form_ProLayer_Shown(object sender, EventArgs e)
{
frm_Wait.Dispose();
}
Aber leider wird das Form_Wait nicht automatisch geschlossen.
Weiß nicht warum, aber ohne was zu ändern läuft es jetzt. Danke für den Hinweis 😄
Das ist aber nicht gerade sauber, hau es lieber in einen extra Thread, warte bis der fertig ist, und schließe dann deine Waiting Form.
Genau. Stichwort: Asynchrone Programmierung.
Ich mache es so dass jede Aktion, die länger als eine Sekunde braucht, einen Warte-Hinweis bekommt (Splash-Screen).
Am einfachsten geht das mit einem Label, das man temporär erzeugt :
Label lbl = new Label();
lbl.Size = new Size(300, 120);
lbl.Location = new Point(parentcontrol.Width / 2 - lbl.Width / 2, parentcontrol.Height / 2 - lbl.Height / 2);
lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
lbl.Text = " " + message + " ";
lbl.BorderStyle = BorderStyle.FixedSingle;
parentcontrol.Controls.Add(lbl);
lbl.BringToFront();
Wenn man eine Fortschrittsanzeige anzeigt unbedingt asynchron arbeiten, wie oben schon erwähnt.
Auch eine Funktion für "Abbrechen" vorsehen.
Gehört für mich alles zu einer guten App.
Ich ärgere mich selber immer sehr wenn ich auf einem Button rumklicke und nichts passiert.
Hab deshalb in einem Web-Shop das tiefgefrorene Hundefutter 3 Mal bestellt, weil nach dem Klick nichts passiert ist. Zum Glück hatte ich genug Platz in der Tiefkühltruhe.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Dann solltest du die App aber nicht mehr verwenden wenn sie den Status des Einkaufswagens nicht speichert, von Idempotenz der Http-Aktionstypen ganz zu schweigen.