我有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!";
}
}
答案 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 函数非常重要,因为只有当输入字符串可接受时才使用此方法进行检查,并阻止用户输入。