删除文本框

时间:2015-09-30 18:05:24

标签: c#

我有textbox1,我输入数字。示例:123 我也有textbox2,显示总和。示例:6(1 + 2 + 3)

我需要的是什么。如果我的textbox1中只有数字,那么一切都很好,我得到了总和。 如果有比像1a2b3c更多的数字,我希望程序显示带有警告和文本的消息框。删除所有非数字?如果那个人按是,那么它确实删除了abc并且只剩下123。如果不是,则显示错误。

我的代码:

 private void button1_Click(object sender, EventArgs e)
    {

        int cipari = Convert.ToInt32(textBox1.Text);

        int summa = 0;
        for (int n = cipari; n > 0; summa += n % 10, n /= 10) ;

        DialogResult dialogResult = MessageBox.Show("Delete all non-digits?", "Warning", MessageBoxButtons.YesNo);
        if (dialogResult == DialogResult.Yes)
        {
            textBox2.Text = summa.ToString();
        }
        else if (dialogResult == DialogResult.No)
        {
            textBox2.Text = "Error! You can't sum non-digits!";
        }


    }

4 个答案:

答案 0 :(得分:1)

只需检查非数字字符的出现位置:

foreach(Char c in textBox1.Text) {
    if( !Char.IsDigit( c ) ) {
        MessageBox.Show("Non-digits detected");
        return;
    }
}

答案 1 :(得分:0)

这真是一个奇怪的程序流程。但你可以这样做:

if(!textBox2.Text.All(char.IsDigit)
{
    DialogResult dialogResult = MessageBox.Show("Delete all non-digits?", "Warning", MessageBoxButtons.YesNo);
    if (dialogResult == DialogResult.Yes)
    {
        textBox2.Text = string.Concat(textBox2.Text.Where(char.IsDigit));
    }
    else if (dialogResult == DialogResult.No)
    {
        textBox2.Text = "Error! You can't sum non-digits!";
    }

}

答案 2 :(得分:0)

如果你只想要数字,那么你可以使用一个小函数擦除并在每个受影响的文本框的textchanged事件上警告用户。这将向用户显示警告,然后删除无效字符。

private void validateText(TextBox tb)
        {
            if (System.Text.RegularExpressions.Regex.IsMatch(tb.Text, @"[^0-9]"))
            {
                MessageBox.Show("Please enter only numbers.");
                tb.Text = tb.Text.Remove(tb.Text.Length - 1);
                tb.Refresh();
                tb.SelectionStart = tb.Text.Length;
                tb.SelectionLength = 0;
            }
        }

使用:

private void textbox1_TextChanged(object sender, EventArgs e)
        {
            validateText(textbox1);
        }

答案 3 :(得分:-1)

为什么每次用户输入字母时删除数字,我想最好的做法是永远不要让用户输入除数字以外的任何内容。

首先创建一个函数,检查输入的文本是否为整数 像这样:

private bool IsNumber(string text)
    {
        Regex regex = new Regex("[^0-9.-]+"); //regex that matches if the text contains only numbers
        return regex.IsMatch(text);
    }

然后使用文本框的PreviewTextInput事件来阻止用户输入除整数(十进制和 - )之外的其他内容。

private void Button_PreviewTextInput(object sender, TextCompositionEventArgs e)
    {
        e.Handled = IsNumber(e.Text);
    }

将e.handled设置为 IsNumber 函数非常重要,因为只有当输入字符串可接受时才使用此方法进行检查,并阻止用户输入。