簡體   English   中英

監視擊鍵

[英]Monitor keystrokes

我是C#的初學者,並且正在制作一個計算器。 但我想禁用“GO!” 按鈕,當textbox1中沒有輸入數字時,一旦用戶在其中輸入數字“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;
        }

    } 

那怎么辦呢? 提前致謝 。

你的想法非常好,但還有更好的方法。 只需檢測文本框內容何時發生變化 當內容改變時,檢查內容是否為空或不為空。 如果內容為空,則禁用該按鈕,否則啟用它。

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

此外,最好將控件名稱更改為默認值以外的其他名稱。 “button15”告訴讀者沒有代碼,“goButton”。

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;
      }
}

您需要檢查文本框值是否可以實際轉換為數字。 檢查數字是不夠好的,你會接受像“4”這樣的壞事或拒絕像“1e3”這樣的好事。 請使用有意義的控件名稱,這樣您就不會意外啟用錯誤的控件。 例如:

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

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

如何使用TextChanged事件,然后檢查文本框是否為空或其中有什么內容並相應地啟用或禁用該按鈕?

此外,如果您使用的是WPF,則可以為GO按鈕編寫一個命令,該命令將自動處理命令的激活和取消激活(以及任何訂閱它的控件)。 您的激活邏輯只是檢查文本框中是否有文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM