Evo koda iz moje aplikacije, izbacio sam gomilu stvari vezanih za web servise, ali sustina je tu. Mozda sam napravio neku slovnu gresku, ako imas problema, pitaj.
Da bi ovo radilo u formi FrmLogin treba da imas 2 Button-a koji se zovu btnLogin i btnCancel i 2 TextBox-a koji se zovu txtUser i txtPassword.
Ja imam u mom kodu i neke ComboBox-ove za izbor jezika, servera i slicno, a ti ubaci sve sto ti treba.
Button-u btnCancel postavi property DialogResult na Cancel, recimo kroz designer.
Code:
// Program.cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// ...
bool flag = false;
short role = 0;
using (FrmLogin login = new FrmLogin())
{
if ((login.ShowDialog() == DialogResult.OK) && login.IsValidLogin)
{
flag = true;
role = login.UserRole;
}
}
if (flag)
{
try
{
switch (role)
{
case 1:
using (MainForm form = new MainForm())
{
Application.Run(form);
}
break;
// add cases here
default:
break;
}
}
catch (Exception exc)
{
// process Exception...
}
}
}
Code:
// FrmLogin.cs
public FrmLogin()
{
InitializeComponent();
this.passTries = 3;
// set what is needed
}
public bool IsValidLogin
{
get
{
return isValidLogin;
}
}
public short UserRole
{
get
{
return userRole;
}
}
private void FrmLogin_Load(object sender, EventArgs e)
{
// set what is needed...
this.ActiveControl = this.txtUser;
this.txtUser.Focus();
this.txtUser.Text = string.Empty;
this.txtPassword.Text = string.Empty;
}
private void btnCancel_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnLogin_Click(object sender, EventArgs e)
{
this.btnLogin.Enabled = false;
this.Cursor = Cursors.AppStarting;
Application.DoEvents();
try
{
this.Authorize();
}
catch (Exception exception)
{
// log error...
this.isValidLogin = false;
this.Cursor = Cursors.Default;
this.btnLogin.Enabled = true;
}
}
private void Authorize()
{
// do authorization
// set isValidLogin property
// set userRole value
if (!this.isValidLogin)
{
this.txtPassword.Clear();
this.txtPassword.Focus();
this.passTries--;
MessageBox.Show("Login Error");
}
this.Cursor = Cursors.Default;
this.btnLogin.Enabled = true;
if ((this.isValidLogin == true) || (this.passTries < 1))
{
base.DialogResult = DialogResult.OK;
base.Close();
}
}
private bool isValidLogin = false;
private short passTries = 3;
private short userRole = 0;