使数字在文本框中键入时一个接一个地出现,但也使它们在0出现时相加
本文关键字:一个 0出 文本 数字 | 更新日期: 2023-09-27 17:58:16
分配
- 创建一个Windows应用程序,在单个字段中接受整数作为输入,每次一个
- 按钮"处理"会在输入字段的正下方显示该数字,但前提是该数字大于当前显示的数字(或是处理的第一个数字)。处理完零(0)后,立即停止接受更多输入
- 分配的第三部分:显示(在输入字段上方)所有处理的数字的总和
这就是我的任务。
到目前为止,我已经完成了作业的第一部分和第三部分。我不知道如何开始第二部分。到目前为止,我只有
label1.Text = textBox1.Text;
label2.Text = textBox1.Text;
label3.Text =(Convert.ToInt32(label1.Text) + Convert.ToInt32(label2.Text)).ToString();
如果我说不通,让我试着解释
- 我的第一个问题是如何使其更加具体。。我想成为能够在我的文本框中键入一个号码,并将其发送到我的标记1然后。。当我键入下一个数字时,它会转到标签2,而不是label1..并重复至label3-9
- 第二个问题:如何限制数字,使标签为1(如果它是一个较大的数字)导致标签2不出现
- 最后一个问题是,一旦0被键入文本框,并显示为标签,它会导致所有数字的总和出现在另一个标签中
很抱歉,如果这太过分了,如果是的话,我可以把这些问题分开。。。
这是我的任务看起来像自动取款机的样子
private void textBox1_TextChanged(object sender, KeyPressEventArgs e)
{
textBox1.MaxLength = 1;
Char digit = e.KeyChar;
if (!Char.IsDigit(digit) && digit != 8)
e.Handled = true;
for (int i = 0; i < Text.Length; i++)
{
int c = Text[i];
if (c < '0' || c > '9')
{
Text = Text.Remove(i, 1);
}
}
}
private void processBtn1_Click(object sender, EventArgs e)
{
int current = 0;
int sum = 0;
int num = Int32.Parse(textBox1.Text);
if (num > 0)
{
sum += num;
if (num > current)
{
label1.Text = num.ToString();
current = num;
}
}
}
这就是我的。。但是这个程序并不像我希望的那样工作…我做错了什么?
将输入的数字存储在标签中效果不佳。您可能会受到表单中标签数量的限制,或者需要动态创建标签。你可以将数字存储在一个数组或列表中,但实际上你根本不必存储数字,你可以保留数字的总和,并在处理完每个数字后忘记它。
将当前显示的数字存储在变量中。如果你的程序不需要处理负数,你可以让它从零开始:
int current = 0;
您还需要一个变量来汇总所有数字:
int sum = 0;
在按钮的事件处理程序中,解析文本框中的文本,检查零,将其添加到总和中,并将其与当前显示的数字进行比较。如果它更大,请将其放在标签和变量中:
int num = Int32.Parse(textBox1.Text);
if (num > 0)
{
sum += num;
if (num > current)
{
label1.Text = num.ToString();
current = num;
}
}
else
{
label2.Text = sum.ToString();
// stop accepting input, perhaps exit?
}