myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Wie kann ich nach Button-Click Ladeanzeige anzeigen bis Form öffnet?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich nach Button-Click Ladeanzeige anzeigen bis Form öffnet?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Rico913
myCSharp.de-Mitglied

Dabei seit: 29.04.2020
Beiträge: 55


Rico913 ist offline

Wie kann ich nach Button-Click Ladeanzeige anzeigen bis Form öffnet?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
24.06.2020 10:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Alf Ator
myCSharp.de-Mitglied

avatar-586.gif


Dabei seit: 30.10.2007
Beiträge: 600
Entwicklungsumgebung: VS2005 / VS2008


Alf Ator ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
24.06.2020 10:29 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Rico913
myCSharp.de-Mitglied

Dabei seit: 29.04.2020
Beiträge: 55

Themenstarter Thema begonnen von Rico913

Rico913 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke dir!

Ich hab es jetzt so:

C#-Code:
        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.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Rico913 am 24.06.2020 10:52.

24.06.2020 10:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Rico913
myCSharp.de-Mitglied

Dabei seit: 29.04.2020
Beiträge: 55

Themenstarter Thema begonnen von Rico913

Rico913 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Weiß nicht warum, aber ohne was zu ändern läuft es jetzt. Danke für den Hinweis :D

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Rico913 am 24.06.2020 11:15.

24.06.2020 11:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JimStark
myCSharp.de-Mitglied

avatar-1005.jpg


Dabei seit: 10.03.2020
Beiträge: 81
Entwicklungsumgebung: Visual Studio 6.0 Enterprise


JimStark ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
24.06.2020 12:02 Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.677
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Genau. Stichwort: Asynchrone Programmierung.
24.06.2020 12:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
BerndFfm BerndFfm ist männlich
myCSharp.de-Team

avatar-3299.jpg


Dabei seit: 20.01.2006
Beiträge: 3.598
Entwicklungsumgebung: Visual Studio 2015
Herkunft: Frankfurt a.M.


BerndFfm ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 :

C#-Code:
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
24.06.2020 15:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
witte
myCSharp.de-Mitglied

Dabei seit: 03.09.2010
Beiträge: 895


witte ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
24.06.2020 16:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.08.2020 04:45