2

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

    } 

では、これを行う方法を教えてください。前もって感謝します 。

4

4 に答える 4

7

あなたのアイデアはかなり良いですが、もっと良い方法があります。テキスト ボックスの内容が変更されたときに検出するだけです。内容が変化した場合は、中身が空か空でないかを確認してください。内容が空の場合はボタンを無効にし、そうでない場合は有効にします。

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

また、コントロールの名前をデフォルト以外のものに変更することをお勧めします。「button15」はコードのリーダーに何も伝えませんが、「goButton」は行います。

于 2010-03-06T15:32:44.590 に答える
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;
      }
}
于 2010-03-06T15:37:28.340 に答える
3

テキスト ボックスの値が実際に数値に変換できるかどうかを確認する必要があります。数字をチェックするだけでは十分ではありません。「4-」のような悪いものを受け入れるか、「1e3」のような良いものを拒否します。また、間違ったコントロールを誤って有効にしないように、意味のあるコントロール名を使用してください。例えば:

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

これはおそらく電卓には十分ではありませんが、アプローチを示しています。

于 2010-03-06T15:57:01.737 に答える
1

イベントを使用してTextChanged、テキストボックスが空であるかどうかを確認し、それに応じてボタンを有効または無効にするのはどうですか?

また、WPF を使用している場合は、コマンド (およびそれにサブスクライブするすべてのコントロール) のアクティブ化と非アクティブ化を自動的に処理する GO ボタンのコマンドを作成できます。アクティブ化ロジックは、テキストボックスにテキストがあるかどうかを確認するだけです。

于 2010-03-06T15:34:10.507 に答える