Autor Beitrag
ramatus
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 17.11.11 09:37 
Hi,

ich wechsel zwischen 2 Forms hin und her. Nun ist mir aufgefallen , dass wenn ich den Schließen Button des Fenster betätige diese Wechsel auch
vollzogen wird woran liegt das ?

viele grüße

claudia
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 17.11.11 09:45 
Weil das zweite Fenster dann ja auch geschlossen wird und ShowDialog zurückkehrt.

Wenn du das nicht möchtest, kannst du im Ereignis FormClosing des zweiten Fensters auf den Wunsch des Benutzers das Fenster zu schließen reagieren und es mit dem Setzen von e.Cancel auf true abbrechen. Dann bleibt das Fenster offen. Allerdings ist die Frage, ob das das ist was der Benutzer möchte. Eine Nachfrage wäre zumindest sinnvoll. ;-)

Nebenbei kann der komplette Wechsel zwischen Fenstern den Benutzer auch verwirren, weil das erste Fenster komplett weg ist. Oft ist es sinnvoller dieses im Hintergrund offen zu lassen. Mit ShowDialog kommt an das erste Fenster ohnehin niemand heran während das zweite angezeigt wird.
ramatus Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 17.11.11 10:42 
Das passiert doch aber auch wenn ich versuche die Startform zu beenden. Eigentlich war es schon so gedacht, dass ich das erste Fenster als
Willkommensbildschirm benutzten wollte.
Kehre ich nun aber zurück zum Ausgangsfenster und will die gesamte Anwendung schließen, dann öffnet er nun wieder das 2 Fenster und das möchte ich natürlich nicht.

Liebe Grüße

Claudia


P.S. Ich habe das mal versucht , wenn ich das Ausgangsfenster geöffnet lasse tritt der selbe Fehler auf. Ich kann die Anwendung nicht schließen.
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Do 17.11.11 14:16 
Hallo Claudia

Zum Schliessen der geladenen Forms kannst Du die Funktion Application.ExitThread() durch irgend ein Ereignis auslösen.
Der geladene Thread wird dann beendet und die geladenen Forms logischerweise auch.

_________________
Gruss
mats74
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 17.11.11 15:48 
Du meinst dann wohl etwas in der Richtung Splashscreen:
www.codeproject.com/...oodsplashscreen.aspx
Suche bei Google C# SPLASHSCREEN

Das Vorgehen sollte eigentlich genau umgekehrt sein:
Der Splashscreen wird beim Start angezeigt, aber das Hauptfenster, das danach kommt, ist auch das Hauptfenster. Zumindest ist das in Delphi so, in C# habe ich das noch nie gemacht.

Jedenfalls könntest du natürlich auch (wenn du das so willst) nach dem ShowDialog die Anwendung schließen statt das erste Fenster wieder anzuzeigen. Das kannst du dann auch unterscheiden, je nachdem wodurch das Fenster geschlossen wurde. Dafür hat ShowDialog einen Rückgabewert, den du beim Klicken des Buttons setzen kannst, wenn dann etwas anderes passieren soll:
msdn.microsoft.com/e...ibrary/65ad5907.aspx
ramatus Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 17.11.11 16:50 
Hallo,

bis jetzt geht das immer noch nicht, ich möchte doch nur den schließen button oben in der ecke benutzten um das Fenster zu schließen.
ich habe doch gar kein ja bzw. nein button.

gibt es da nicht eine lösung für ?

liebe grüße claudia
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Do 17.11.11 17:25 
Wenn Du das Kreuz in der oberen Ecke benutzt, kannst Du mit dem FormClosing-Ereignis den Vorgang beeinflussen, also dein Form schliessen oder halt eben nicht.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = false// Schliesst das Form
    // oder
    Application.ExitThread(); // Schliesst den Thread inklusiv die geladenen Forms
}

Dass das Form nicht automatisch geschlossen wird, ohne beeinflussung dieses Events finde ich irgenwie merkwürdig :gruebel: .
Ich brauche diesen Event beispielsweise zum Verhindern eines Abbruch des Forms bei bestimmten Programmbedingungen.
Ansonsten würdest Du uns mit ein Bisschen Beispielcode bei der Lösung behilflich sein.

_________________
Gruss
mats74
ramatus Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 17.11.11 17:40 
ich habe einen startbildschirm mit 3 button und momentan 2 forms es sollen einmal 4 forms werden.
beim button klick event rufe ich die neue form auf und kann auch wieder zurück . nur wenn ich dann den startbildschirm normal mit den kreuz schließen will ruft
er wiederum die unterform auf. in abap hätte ich jetzt gesagt das der ok code noch nicht leer ist und erst gecleart werden muss . aber wie macht man das in c #

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
namespace WindowsFormsApplication1
{
    public partial class Willkommen : Form
    {
        public Willkommen()
        {
            InitializeComponent();
        }
          Auswertung form =new Auswertung();
        private void Lieferanten_Click(object sender, EventArgs e)
        {
// 1 Button
            DialogResult = DialogResult.None;
        
            using (Auswertung MyForm = new Auswertung())
                MyForm.ShowDialog();
            this.Show();
   
        }
// 2 Button
        private void btnSupply_Click(object sender, EventArgs e)
        {


        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
         
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
ramatus Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 17.11.11 18:17 
ich habe jetzt eine andere möglichkeit gefunden , man kann ja ein button zum schließen defenieren und das habe ich gemacht und gut ist.

aber danke trotzdem für eure mühe.


liebe grüße

claudia

Eine Frage habe ich aber noch , habt ihr ein Beispiel wie ich an eine Auswahlbox eine Datenbanktabelle anknüpfen kann und diese dann als Diagramm ausgeben kann ?


Beispiel 5 Leute haben übers jahr so und so viel geraucht und das will ich dann als diagramm darstellen entweder alle zusammen oder jeder einzeln.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 17.11.11 20:24 
Hallo ramatus,

bitte erstelle für die neue Frage auch ein neues Thema, danke.
lothi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 114
Erhaltene Danke: 3



BeitragVerfasst: Do 01.12.11 14:51 
Hallo

Vielleicht noch zum Ausgangsproblem wenn ich es richtig verstanden habe.

Wenn du ein Projekt erstellst, wird in der Main Methode automatisch das erstellte Form in der Nachrichtenschleife geöffnet:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public static void Main()
{
   Application.Run(new MyForm());

}


Schliesst du nun das Formular wird auch die Nachrichtenschleife beendet und schwups wird alles geschlossen. Also muss das Anzeige Formular da raus.

Gruss Lothi