Frage

Wie würde man eine öffentliche Bool auf true von einem Kind Form in einem mdi Typ Programm wechseln?

Ich habe ein Kind Form genannt Anmelde, dass, wenn alles klar geht ich eine „authentifiziert“ Bool auf true in der form1 (Haupt-) Form festlegen möchten

War es hilfreich?

Lösung

Die richtige, echte OO Art und Weise, Dinge zu tun wäre einen Event auf Ihrem Kind Form zu belichten, dass die Eltern befestigen. Sie Ihre Trennung von Bedenken zu verletzen, wenn Sie das Kind Form Annahmen über seine MdiParent machen.

Zum Beispiel kann eine sehr einfache Methode zu tun, was Sie beschreiben, wäre diese Form auf Ihrem Kind haben:

public event EventHandler Authenticated;

Die, wenn die Eltern öffnet es ...

YourForm newForm = new YourForm();

newForm.Authenticated += new EventHandler(newForm_Authenticated);

newForm.MdiParent = this;

// and so on 

Sie können auch etwas anspruchsvollere gehen (und ich etwas bedeuten) durch eine Authenticated boolean Eigenschaft, um Ihr Kind Form hinzufügen, und benennen Sie die Veranstaltung AuthenticatedChanged. Sie könnten dann die gleichen Event-Handler, um den Wert der Immobilie zu überprüfen, um festzustellen, ob der Benutzer authentifiziert hat.

In jedem Szenario Sie einfach Ihre Veranstaltung von dem Kind Form erhöhen, wenn Sie die Eltern aktualisieren möchten.

Andere Tipps

Sie können eine global zugängliche Variable machen, die die Haupt-Form hält, dann die Variable innerhalb des Kindes verwenden Methoden, die auf der Hauptform zu nennen.

Oder Sie die entsprechende Elternteil oder Eigentümer des Vermögens des Kindes Fenster auf die richtige Art der Haupt-Form, und von dort aus arbeiten stellen könnten.

Da ich bemerkte, dass Sie eine „Anmeldung“ verwenden bilden Sie folgenden versuchen könnten: set des Dialogs Eigenschaft Anmeldeformular nach Benutzername / Passwort Test Erfolg. Ich bin mit Benutzername / Pass nur als Beispiel. Auf dem Anmeldeformular so etwas wie:

if(isMatch(username, password)){
  this.DialogResult=DialogResult.OK;
  this.Close();
}
else MessageBox.Show("Logon error - try again!");
// or anything else you would like to do in case of an error

Und dann auf der Mutterform:

LogonForm f = new LogonForm();
if(f.ShowDialog() == DialogResult.OK){
// continue
}
else {
// abort
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top