1

よし、これがシナリオだ。私は電卓を作成していますが、(電卓の) ユーザーが複数のポイント (.) を追加できないようにしたいのは、明らかに 1.2.1 が実数ではないためです。入力しているテキスト ボックスに追加できるポイントは 1 つだけですか?

4

3 に答える 3

2

または、この種の目的にぴったりのMaskedEditボックスを使用できます

リンク

于 2011-04-06T00:07:50.203 に答える
1

Poma が指摘しているように、TextChanged イベントをリッスンして、入力ボックスの内容を調べることができます。次に、(基本的に) 2 つの選択肢があります。

  1. 入力をライブで修正します (つまり、エラーが発生しないようにテキストをリセットします)
  2. 何か問題があることを示す視覚的なフィードバックを提供する

私は通常、オプション 2 を使用して、エラー I を示します。

  1. 入力オプションを無効にします (つまり、[OK] ボタン)
  2. テキスト フィールドの背景色を明るい赤に変更します。

プログラムでテキストを変更すると、テキスト変更イベントも生成されるため、オプション 1 を使用する場合は注意してください。1 つの解決策は、ブール値のフラグを設定することです。

private bool changingText = false;

private void myTextBox_textChanged(...)
{
   if(changingText)
      return;

   fixErrors();
}

private void fixErrors()
{
    // Before changing myTextBox.Text, set the flag
   changingText = true;
   myTextBox.Text = ...
   changingText = false;
}

他にもオプションがありますが、それらは最も一般的なものです。

編集:

もう 1 つのより良い解決策は、テキスト ボックスの OnKeyDown を処理することです。キーが必要なものでない場合は、単にイベントの Handled プロパティを true に設定します。どちらの方法でも機能します。

-- ダン

于 2011-04-05T23:59:34.887 に答える
0

イベントを使用TextChangedしてユーザー入力を検証できます

于 2011-04-05T23:49:45.647 に答える