I have 3 classes: Form1, LoginForm and program.
Program holds my main method that then runs loginform, if a condition inside login form is met then form1 is run.
What I want it to do is hide loginform just before I show form1.
How do I do this since I can't use loginform.hide();
Here's code:
namespace RepSalesNetAnalysis { public partial class LoginForm : Form { public bool letsGO = false; public LoginForm() { InitializeComponent(); } private static DataTable LookupUser(string Username) { const string connStr = "Server=10asaf;" + "Database=dfafa;" + "uid=bufaf;" + "pwd=dridfsdf;" + "Connect Timdf0;"; //"Data Source=apex2006sql;Initial Catalog=Leather;Integrated Security=True;"; const string query = "Select password From dbo.UserTable (NOLOCK) Where UserName = @UserName"; DataTable result = new DataTable(); using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(query, conn)) { cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = Username; using (SqlDataReader dr = cmd.ExecuteReader()) { result.Load(dr); } } } return result; } private void buttonLogin_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textUser.Text)) { //Focus box before showing a message textUser.Focus(); MessageBox.Show("Enter your username", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); //Focus again afterwards, sometimes people double click message boxes and select another control accidentally textUser.Focus(); return; } else if (string.IsNullOrEmpty(textPass.Text)) { textPass.Focus(); MessageBox.Show("Enter your password", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); textPass.Focus(); return; } //OK they enter a user and pass, lets see if they can authenticate using (DataTable dt = LookupUser(textUser.Text)) { if (dt.Rows.Count == 0) { textUser.Focus(); MessageBox.Show("Invalid username.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); textUser.Focus(); return; } else { string dbPassword = Convert.ToString(dt.Rows[0]["Password"]); string appPassword = Convert.ToString(textPass.Text); //we store the password as encrypted in the DB //MessageBox.Show Console.WriteLine(string.Compare(dbPassword, appPassword)); if (string.Compare(dbPassword, appPassword) == 0) { DialogResult = DialogResult.OK; this.Close(); } else { //You may want to use the same error message so they can't tell which field they got wrong textPass.Focus(); MessageBox.Show("Invalid Password", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); textPass.Focus(); return; } } } } } }
Am i missing something? heres my main class;
namespace RepSalesNetAnalysis { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); LoginForm fLogin = new LoginForm(); if (fLogin.ShowDialog() == DialogResult.OK) { Application.Run(new Form1()); } else { Application.Exit(); } } } }
this.Hide();