2013-12-12 63 views
0

我有一個應用程序在這裏試圖使winforms。這就是我希望它發生的原因:每當用戶點擊註冊訪問者按鈕時,註冊表格應該打開。工作正常。這裏是被稱爲在這種情況下,功能:使用複選框來啓用文本框

private void Register_Visitor_Load(object sender, EventArgs e) 

在這種形式我有一個文本框放在我希望在禁用加載窗體。我寫了一行禁用表單加載的文本框:

textbox1.enabled = false; 

我把上面的行放在加載函數工作正常。現在我想根據選中的複選框啓用我的textbox1。爲了這個,我寫的代碼:

CheckState state = checkBox1.CheckState; 
      switch (state) 
      { 
       case CheckState.Checked: 
        { 
         textBox1.Enabled = true; 
         break; 
        } 
       case CheckState.Indeterminate: 
       case CheckState.Unchecked: 
        { 
         break; 
        } 

現在,當我在頁面加載功能沒有任何反應這是肯定會發生作爲功能僅呼籲的形式加載代碼放在上面。沒有得到的是放置複選框代碼的位置,以便我的文本框在運行時啓用。其他功能是響應按鈕,但我想在這裏它立即啓用運行時的文本字段,當用戶選中複選框。請好好解釋一下我該怎麼做到這一點!

+0

嘗試執行檢查框中的代碼更改事件。 –

+0

使複選框的選中事件。 –

回答

7

您可以使用CheckStateChanged事件;所以無論什麼原因,checkBox1被選中/取消/變灰你就會有正確textBox1啓用/禁用

private void checkBox1_CheckStateChanged(object sender, EventArgs e) { 
    textBox1.Enabled = (checkBox1.CheckState == CheckState.Checked); 
} 
+0

不錯的優化 –

+0

不是textBox1.Enabled = checkBox1.Checked;甚至更好? – Somachr

+0

@Somachr:如果你不需要處理灰色*狀態,既然'CheckState.Indeterminate'已經在問題中提到過了,我認爲將狀態直接聲明是更安全的。 –

0

您正在將代碼放在錯誤的事件中。

而不是在pageload將代碼放在chekchange事件的複選框上。

這將幫助你。

private void chkDisable_CheckedChanged(object sender, EventArgs e) 
{ 
     if (((CheckBox)sender).Checked) 
     { 
      textBox1.Enable=true; 
     } 
     else 
     { 
      textBox1.Enable=false; 
     } 
} 
0

將其處理爲複選框事件函數內部的上述代碼。 你的情況是checkchanged狀態。

0

你可以試試這個:

private void checkBox1_Click(object sender, EventArgs e) 
{ 

     if (checkBox1.Checked) 
     { 
      textBox1.Enabled = false; 
     } 
     else 
     { 
      textBox1.Enabled = true; 
     } 
} 
0

我做的一些上述答案的混合體,它完美地工作。我想在加載表單時禁用按鈕的狀態,但是如果用戶選中了一個框,那麼啓用該代碼:

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     button1.Enabled = (checkBox1.CheckState == CheckState.Checked); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked) 
     { 
      button1.Enabled = true; 
     } 
     else 
     { 
      button1.Enabled = false; 
     } 


    }