2015-12-05 37 views
0

「你能教我如何禁用按鈕,直到所有文本框不爲空」。 以我的設計形式命名登錄。 我有2個文本框和2個按鈕 我要禁用按鈕,直到所有文本框不爲空如何禁用提交按鈕,直到在c#中的文本框不是空的?

thnks幫我 所以我的繼承人的代碼在C#中的Windows應用程序的形式

SqlConnection con = new SqlConnection(@"Data Source=ADMIN-\MSSQLSERVERR;Initial Catalog=Admin;Integrated Security=True"); 
    private void button1_Click(object sender, EventArgs e) 
    { 

     SqlDataAdapter sda = new SqlDataAdapter("Select USN From Admin where USN ='" + textBox1.Text + "'and Password ='" + textBox2.Text + "'", con); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 


     if (dt.Rows.Count == 1) 
     { 
      this.Hide(); 
      Admin_Panel aa = new Admin_Panel(dt.Rows[0][0].ToString()); 
      aa.Show(); 
     } 

     else 
     { 
      MessageBox.Show("Please check your username and password"); 
      textBox1.SelectAll(); 
      textBox2.Text = ""; 
     } 
     button1.Enabled = !string.IsNullOrWhiteSpace(textBox1.Text); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     SqlDataAdapter sda = new SqlDataAdapter("Select USN From Admin where USN ='" + textBox1.Text + "'and Password ='" + textBox2.Text + "'", con); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 


     if (dt.Rows.Count == 1) 
     { 
      this.Hide(); 
      Student aa = new Student(dt.Rows[0][0].ToString()); 
      aa.Show(); 
     } 

     else 
     { 
      MessageBox.Show("Please check your username and password"); 
      textBox1.SelectAll(); 
      textBox2.Text = ""; 
     } 


     button2.Enabled = !string.IsNullOrWhiteSpace(textBox1.Text); 

    } 

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
      e.Handled = true; 
     base.OnKeyPress(e); 


    } 

我嘗試一切我知道,但它不工作:( 我也試試這個button1.Enabled = string.IsNullOrWhiteSpace(textBox1.Text!); 但是當我已經把在文本框USN和密碼的2個按鈕沒有啓用

+0

你的意思是你想只啓用按鈕如果用戶名和密碼輸入文本框是嗎? –

+0

有點,我想啓用時,兩個文本框填充 在我的代碼button1.Enabled =!string.IsNullOrWhiteSpace(textBox1.Text); 如果文本框是空的它將禁用按鈕 但當我填充兩個文本框的按鈕仍然禁用我不知道如何編碼啓用一旦文本框不爲空@VijayKumbhoje –

+0

我不知道如何把/使用if else代碼中的聲明。 –

回答

2

首先設置你的butto ns.Enabled屬性爲false。然後爲兩個TextBox添加一個TextChanged-Handler,在這裏你檢查兩個TextBox是否包含某些東西。

處理程序的代碼看起來是這樣的:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    setButtonVisibility(); 
} 

private void textBox2_TextChanged(object sender, EventArgs e) 
{ 
    setButtonVisibility(); 
} 

private void setButtonVisibility() 
{ 
    if ((textBox1.Text != String.Empty) && (textBox2.Text != String.Empty)) 
    { 
     button1.Enabled = true; 
     button2.Enabled = true; 
    } 
    else 
    { 
     button1.Enabled = false; 
     button2.Enabled = false; 
    } 
} 
+0

我將這個重構爲'textBox1_TextChanged'和'textBox2_TextChanged'具有相同的確切主體。鼓勵初學者的良好做法 –

+0

我不知道我是否正確地做到了這一點:您認爲刪除第二個處理程序的代碼會更好嗎,因爲它與第一個處理程序的代碼相同? :) – Tamwe

+0

as @B。 Clay Shayton在他的回答中做了,提取到一個單一的方法,並在你的事件處理程序的主體中調用該方法。我會編輯給你的,告訴你 –

1

你要監視更改文本框,在他們的Changed事件,如:在不增加

private void textbox1_Change(object sender, EventArgs e) 
{ 
    ConditionallyEnableSubmitButton(); 
} 

private void textbox2_Change(object sender, EventArgs e) 
{ 
    ConditionallyEnableSubmitButton(); 
} 

private void ConditionallyEnableSubmitButton() 
{ 
    button1.Enabled = (!string.IsNullOrWhiteSpace(textBox1.Text) || 
         !string.IsNullOrWhiteSpace(textBox2.Text)); 
} 

提示負責人:給,你會以編程方式引用一個可識別的名稱的任何控制,如「btnSubmit按鈕」,「txtbxUsername」,「txtbxPwd」等

你可以做很多事情不如讀史蒂夫麥康奈爾的「代碼完成」爲這個和許多其他推動良好做法。

0
private void textbox1_TextChanged(object sender, EventArgs e) 
{ 
    EnableButton(); 
} 

private void textbox2_TextChanged(object sender, EventArgs e) 
{ 
    EnableButton(); 
} 

private void EnableButton() 
{ 
    if(textbox1.Text == "" || textbox2.Text == "") 
    { 
     button1.Enabled = false; 
     button2.Enabled = false; 
    } 
    else 
    { 
     button1.Enabled = true; 
     button2.Enabled = true; 
    } 
} 
相關問題