-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

将这个(或这个的变体,根据你想让用户输入的内容)放在文本框按键事件中,所以基本上你将在这个文本框中管理按键。添加 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

检查在文本框中插入文本以避免非数字字符的各种方法并不是一件容易的事,而且往往会在某处失败。例如,从剪贴板粘贴的文本呢?退格、删除、左、右箭头键呢?。

在我看来,最好采用不同的方法。
使用 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 回答
0

你使用什么图形用户界面?使用 Winforms 有两种方法:

  1. 我建议:使用 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 回答