2016-08-24 5 views
-2

Ich würde gerne wissen, ob es eine mögliche Lösung (ich hoffe es gibt) zu meinem Problem gibt. Ich habe zwei Formulare, das Login-Formular und das Hauptformular. Ich möchte wissen, ob es eine Möglichkeit gibt, das Schließen des Hauptformulars zu deaktivieren und das Schließen nur zu erlauben, wenn ich mich abmelde (was den Benutzer zurück zum Anmeldeformular umleitet) und das Schließen nur zulässt, wenn das Anmeldeformular aktiv ist. Entschuldigung für mein schlechtes Englisch.Deaktivieren Sie das Schließen eines bestimmten WinForm

Ich habe versucht, das Ereignis unten zu verwenden, ja, es hält mich davon ab, das Hauptformular zu schließen, aber als ich mich abmeldete, tat es dasselbe mit meinem Anmeldeformular, das ich nicht passieren wollte. Gibt es eine Möglichkeit, dies zu tun?

private void Form1_Closing(object sender, CancelEventArgs e) 
{ 
    e.Cancel = true; 
} 
+0

Sie irgendwo ein Flag halten, das anzeigt, ob der Benutzer abgemeldet hat. Setzen Sie das Flag auf "true", wenn der Benutzer sich abgemeldet hat. Dann im 'Form1_Closing' Ereignis' e.Cancel = Flag; '. –

+0

Es tut mir leid, aber diese "Flagge" ist neu für mich (Anfänger Level). Ich würde gerne hören, wenn Sie mir erklären können, wie ich das auf meine Formulare anwenden kann. Vielen Dank im Voraus, Sir. –

+1

Es kann sein 'öffentliches statisches bool SignedOut;' in 'Program' Klasse in' Program.cs' und 'e.Cancel = Program.SignedOut;' –

Antwort

1

Ich nehme an, Sie verwenden Loginform wie Dialog (Showdialog) Verwenden DialogResult.OK nur, wenn Benutzer sich erfolgreich

.... 

private voif logoutButton_click(object sender, EventArgs e) 
{ 
    _logged = false; 
} 

..... 

private void loginButton_click(object sender, EventArgs e) 
{ 
    LoginForm _loginForm = new LoginForm(); 
    if(_loginForm.ShowDialog() == DialogResult.Ok) 
    { 
     _logged = true; 
    } 
} 

...... 

private void Form1_Closing(object sender, CancelEventArgs e) 
{ 
    if(!_logged) 
     e.Cancel = true; 
} 
+0

Nicht wirklich, aber ich werde dieses auch ausprobieren. Danke für die Antwort, Sir. –

Verwandte Themen