Login vor Programmstart

mchashi

Mitglied
Hallo Leuts,

ich komme aus der Web-Welt (HTML, CSS, MySQL, PHP, ASP) und arbeite nun seid ca. 1 Woche sehr intensiv mit C# und Visual Studio 2005 Beta.

Ich habe jetzt eine Frage zu folgender Problemstellung...

Ich möchte eine Kundenverwaltung programmieren. Bevor sich das Hauptprogramm öffnet, soll sich ein Login-Fenster öffnen, wo man seinen Benutzernamen + Passwort angeben muss und dann geprüft wird, ob der User ein Recht hat das Programm zu öffnen oder nicht (oder später mal Rechte für das Menü gesetzt werden).

Habe dazu eine Klasse "F_Login.cs", die aus der Standard von .NET "Program.cs" gestartet wird. Hier der Code der "Program.cs":
Code:
static class Program
{
	/// <summary>
	/// The main entry point for the application.
	/// </summary>
	[STAThread]
	static void Main()
	{
		Application.EnableVisualStyles();
		Application.EnableRTLMirroring();
		Application.Run(new F_Login());
	}
}
Nachdem nun nach Eingabe der Login-Daten auf den Button "Login" geklickt wurde, wird folgende Funktion aus der Klasse "F_Login" ausgeführt:
Code:
private void buttonLogin_Click(object sender, EventArgs e)
{
	if (check_login(textBoxBenutzername.Text, textBoxPasswort.Text))
	{
		F_Main f_Main = new F_Main(this);
		f_Main.Show();
	}
	else
		//Fehlermeldung: Login nicht erfolgreich

}
NUN KOMMTS: Wenn der Login erfolgreich war, soll das Hauptprogramm geöffnet werden (F_Main). Das klappt alles so weit. Doch wenn ich in dem Konstruktor der Klasse "F_Main" jetzt das Login-Fenster (F_Login) schließen will, mit f_Login.Close(), schließt sich das Main-Fenster mit. Ich kann das Login-Fenster nur Visible = false setzen.

Hier der Konstruktor der Klasse F_Main:
Code:
public F_Main(F_Login f_Login)
{
	InitializeComponent();

	f_Login.Visible = false;

	// Bei "f_Login.Close()" schließt sich das F_Main-Fenster mit
	// f_Login.Close();
}
Wie macht man das oder warum klappt es nicht. Hoffe auf Eure Hilfe, denn weiß echt nicht mehr weiter.

Vielen Dank im Voraus.

Gruß
mchashi.
 
moin

Das sich das zweite Fenster auch schließt, liegt daran, dass von Windows her das Login-Fenster als Hauptfenster dient.

Application.Run(new F_Login()); startet eine Meldungsschleife um das Login-Fenster herum und wenn das geschlossen wird, ist das Programm zu Ende.

Ich weiß leider nicht, wie man das lösen kann, aber immerhin weißt du jetzt wo das Problem liegt ;-)

Aber warum soll F_Login eigentlich geschlossen werden? So könnte man nen Logout-Mechanismus ja auch einbaun!?

mfg broetchen
 
Aja, vielen Dank für die Info.

Meinst du, dass ist von der Performance her schlecht, wenn ich das nur Visible = false setze?

Stimmt, für das Logout wäre es sinnvoll.
 
moin

Ich denke, dass dieses eine, kleine Fenster auf die Performance nicht die geringsten Auswirkungen hat, und wenn man wirklich auf Performance trimmen wollte, würde man nicht zu Framework-Sprachen á la .net oder Java greifen ;-)

Um auf dein Problem zurück zu kommen: schau dir einfach mal die Application-Klasse an, vielleicht findest du dort was.

mfg broetchen
 
Lasse das kleine Fenster jetzt einfach Visible = false setzen und habe bei meinem Hautpfenster dann ein Closing Event eingebaut, dass dann einfach das Login-Fenster schließt und somit die Anwendung (Application) geschlossen ist.

Danke, ich denke jetzt sind meine Fragen beantwortet und mein Problem gelöst.
 

Neue Beiträge

Zurück