-1

私のプログラムを使用している人に、c#のテキストラベルに数字のみを入力するように義務付けたいと思います。どうやってやるの?例:方程式の数:(彼は数字のみを入力する必要があります)

2との間の数字を入力するように彼に義務付けるこのコードですが10、文字のコードが必要です

if (int.Parse(txt1.Text) < 2 || int.Parse(txt1.Text) > 10)
   {
     l6.ForeColor = System.Drawing.Color.Red;
     l6.Text = "Svp choisir un nombre entre 2 et 10 ... Soyez Logique!";
   }
4

4 に答える 4

1

これ(またはユーザーに入力させたい内容に応じて、これのバリエーション)をテキストボックスのkeypressイベントに入れると、基本的にこのテキストボックスでキーの押下を管理できます。System.Mediaライブラリを追加して、ビープ音を使用する場合ユーザーが間違ったキーを入力するか、コードから削除します...

        if ((e.KeyChar >= '0') && (e.KeyChar <= '9') && (txt1.Text.Length < 10))
        {

        }
        else if (e.KeyChar == 0x08)
        {
            //BACKSPACE CHAR
        }
        else if (txt1.SelectionLength > 0)
        {
            //IF TEXT SELECTED -> LET IT OVERRIDE
        }
        else
        {
            e.Handled = true;
            SystemSounds.Beep.Play();
        }

于 2013-01-13T14:13:55.780 に答える
0

どのGUIを使用していますか?Winformsを使用すると、次の2つの方法が思い浮かびます。

  1. おすすめ:textBoxの代わりにnumericUpDownコントロールを使用してください。このように、ユーザーは数字のみを入力でき、値を変更するための優れた上/下矢印があります。さらに、カーソルキーを処理できます。

  2. 検証イベントハンドラーを実装します。

于 2013-01-13T14:09:48.963 に答える
0
if (txt1.Text.Trim().Length > 0)
{
    // Parse the value only once as it can be quite performance expensive.
    Int32 value = Int32.Parse(txt1.Text)

    if ((value >= 2) && (value <= 10))
    {
        l6.ForeColor = Color.Red;
        l6.Text = "Svp choisir un nombre entre 2 et 10 ... Soyez Logique!";

        // Clear the text...
        txt1.Text = "";
    }
    else
    {
        // Your code here...
    }
}

しかし、私見では、TryParseは、不正な文字列形式をより適切に処理できるため、さらに優れています。

if (txt1.Text.Trim().Length > 0)
{
    Int32 value;

    if (!Int32.TryParse(txt1.Text, out value))
    {
        l6.ForeColor = Color.Red;
        l6.Text = "Svp choisir un nombre entre 2 et 10 ... Soyez Logique!";

        // Clear the text...
        txt1.Text = "";
    }
    else
    {
        // Your code here...
    }
}
于 2013-01-13T14:10:53.550 に答える
0

数字以外の文字を避けるためにテキストボックスにテキストを挿入するさまざまな方法をチェックすることは簡単な作業ではなく、多くの場合、どこかで失敗します。たとえば、クリップボードから貼り付けられたテキストはどうですか?、Backspace、Delete、Left、Right矢印キーはどうですか?

私の意見では、別のアプローチに従う方が良いと思います。
Validatingイベントを使用して、ユーザーが好きなものを入力または貼り付けできるようにします。検証イベントで、ユーザーをチェックしてアドバイスするか、エラーを通知するための特別なerrorProviderを追加しますか。

    private void l6_Validating(object sender, CancelEventArgs e)
    {
        int isNumber = 0;
        if (l6.Text.Trim().Length > 0)
        {
            if (!int.TryParse(l6.Text, out isNumber))
            {
                e.Cancel = true;
                errorProvider1.SetError(l6, "Svp choisir un nombre entre 2 et 10 ...";);
            }
            else
            {
                errorProvider1.SetError(l6, "");
            }
        }
    }
}
于 2013-01-13T14:12:20.507 に答える