2010-03-06 44 views
2

我是C#的初學者,正在製作計算器。但是我想禁用「GO!」按鈕,當文本框1中沒有輸入數字時,並且一旦用戶在其中輸入數字「GO!」按鈕變得啓用...如何在C#中做到這一點?我試過KeyDown和KeyPress這樣的事件,但從未工作監視器擊鍵

private void Form1_Load(object sender, EventArgs e) 
    { 

      button15.Enabled = false; 
     button16.Enabled = false;  

    } 


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 

     if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) 
     { 
      button15.Enabled = true; 
      button16.Enabled = true; 

     } 
     else 
     { 
      button15.Enabled = false; 
      button16.Enabled = false; 
     } 

    } 

那麼請問該怎麼做? 在此先感謝。

回答

3
private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
     if(String.IsNullOrEmpty(textBox1.Text)) 
     { 
      button15.Enabled = false; 
      button16.Enabled = false; 
     } 
     else 
     { 
      button15.Enabled = true; 
      button16.Enabled = true; 
     } 
} 
+0

mmmmmm,我也不工作,按鈕始終啓用,試圖禁用它們在form1_load但他們變得永久禁用! – rafael 2010-03-06 15:48:29

+0

您是否將此事件添加到設計器中的textBox1的TextChanged事件?你必須這樣做才能使它工作,你不能只複製粘貼它。 – Phoexo 2010-03-06 15:50:49

+0

對不起,我不明白,我把它放在form1.cs文件中,我應該把它放在哪裏? – rafael 2010-03-06 15:55:53

7

你的想法很不錯,但有一個更好的方法。只需檢測文本框內容的變化。內容更改時,請檢查內容是否爲空或不爲空。如果內容爲空,則禁用該按鈕,否則啓用它。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

此外,它會爲你的控件的名稱更改爲默認值以外的東西是個好主意。 「button15」告訴讀者這段代碼什麼都沒有,「goButton」的確如此。

1

如何使用TextChanged事件,然後檢查文本框是否爲空或者是否有內容,並相應地啓用或禁用該按鈕?另外,如果您使用的是WPF,則可以爲您的GO按鈕編寫一個命令,該命令將自動處理命令(以及訂閱該命令的任何控件)的激活和停用。您的激活邏輯將僅僅是檢查文本框中是否有文本。

3

您需要檢查文本框的值是否可以真正轉換爲數字。檢查數字不夠好,你會接受像「4-」這樣的不好的東西,或拒絕像「1e3」這樣的好東西。請使用有意義的控件名稱,以免意外啓用錯誤的控件。例如:

private void txtOperand_TextChanged(object sender, EventArgs e) { 
    double value; 
    btnGo.Enabled = double.TryParse(txtOperand.Text, out value); 
} 

這可能對您的計算器來說還不夠好,但是卻演示了這種方法。