-1

私がやりたいことは、入力されたすべての値を削除するクリアボタンがあることです。ただし、値を入力せずにクリックすると、エラーが表示されます。したがって、ユーザーが値を入力しなかった場合、[クリア] ボタンは無効になることにしました。ただし、そうすると、クリアボタンが再び有効になることはないので、数秒後にクリアボタンを再度有効にするタイマーを3秒としましょう。誰でも私を助けてもらえますか?ところで、私がこれまでに行ったことはC#である必要があります

if (txtFirstActual.Text.Length > 0)
{
    //so that if the user clicked on Clear button without entering a value, it will disable the button
    button1.Enabled = true;               
}
else
{
    button1.Enabled = false;
    // here, i want to put a timer here so that it re enables the button after few sec's
}
4

3 に答える 3

4

タイマーベースのボタンチェックは悪いアプローチです。データが入力された後にのみ [クリア] ボタンを有効にしたい場合は、ユーザーがデータを入力するテキストボックスの " TextChanged " イベントをサブスクライブする必要があります。

イベントのサブスクライブの詳細については、この MSDN の記事「イベントの消費」を参照してください。

于 2013-05-12T12:04:41.357 に答える
1

変更されたテキストのボタンを有効/無効にするのはどうですか。値を確認してください。Null または空の場合は無効にし、それ以外の場合はボタンを有効にします。

private void MyTextBox_TextChanged(object sender, EventArgs e)
{
   try
   {
      if(String.IsNullOrEmpty(((TextBox)sender).Text)))
      {
          MyClearButton.Enabled = false;
      }
      else
      {
          MyClearButton.Enabled = true;
      }
   }
   catch
   {
       MyClearButton.Enabled = false;
   }
}
于 2013-05-12T12:02:56.363 に答える
0

なぜ回り道を気にするのですか?button1 の Click ハンドラではどうですか

if (!String.IsNullOrEmpty(txtFirstActual.Text))
{
    // clear data
}

特定のケースでメソッド呼び出しが失敗する場合 (つまり、何もない場合にクリアしようとする場合)、最善の方法は、呼び出しを行っている場所をチェックすることです。これは通常、危険なコードをプログラムに残し、ユーザーがその危険なコードにアクセスできないようにするためにロックや障害物を UI に組み込むよりもはるかに簡単でクリーンです。

于 2013-05-12T12:19:19.957 に答える