2012-11-07 52 views
3

該按鈕僅在我點擊它後禁用。只要NumericUpDown控件中的值增加到特定點以上,我就希望它在沒有任何交互的情況下禁用。我有goggled,但沒有找到答案,這裏是我的代碼:如何在NumericUpDown控件中的值大於某個數字時禁用按鈕?

private void mybtn_Click(object sender, EventArgs e) 
    {    
     if (numericud.Value > myArray[r, c] || myArray[r, c] == 0) 
      DisableButton(mybtn);    
     myArray[r, c] = CalcNewMax(myArray[r, c]); 
     OpenNewForm(); 
    } 

    private void DisableButton(Button selectedbtn) 
    { 
     selectedbtn.Enabled = false; 
    } 

任何幫助非常感謝,謝謝!

+2

你的代碼替換線

DisableButton(mybtn);

應該已經可以工作了,假設'mybtn.Enabled = false;'正在執行。如果你用大括號包圍那行代碼,這將會更清楚。 –

+0

小,完整,請舉例 –

+0

不要因反對票而感到氣餒。你能詳細說明代碼部分嗎? – aromore

回答

1

我想您所呼叫的方法雙擊「mybtn_Click()」的時候,按鈕被點擊,而不是數值上下變化的值。在按鈕屬性的「Events」部分中,檢查「MouseClick」事件是否設置爲調用「mybtn_Click()」。

之後轉到數字上下屬性的「事件」部分,並設置「ValueChanged」事件以調用「mybtn_Click()」。我還建議您在此之前將方法的名稱更改爲更適合的方法。

最後,你不需要做一個全新的方法,只需更改按鈕的啓用值:簡單地用

mybtn.Enabled = false; 
+0

我剛剛注意到我自己從前面的例子看,但感謝至少現在回覆我知道什麼是錯的。 – JeliBeanMachine

3

下面是一些適用於特定示例的代碼。

我沒有看到你的代碼有任何具體問題,所以如果我是你,我會設置一些斷點來確保你的條件得到滿足,並且一切都按照你的想法進行。

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
     { 
      if (numericUpDown1.Value > 5) 
       button1.Enabled = false; 
     } 
    } 
} 

作爲附加的註釋,Visual Studio將自動生成numericUpDown1_ValueChanged處理程序時,你就增減的控制在設計

+0

大聲笑,找到答案,並去響應,但得到網絡錯誤,你的已經在這裏..我同意這個:) – Tony

+0

謝謝你,我對編程還很陌生,對我來說這是一個相當天真的錯誤。代碼正在被錯誤的事件處理;它是在實際的按鈕Click和不是ValueChanged之後執行的。 – JeliBeanMachine

相關問題