使数字在文本框中键入时一个接一个地出现,但也使它们在0出现时相加

本文关键字:一个 0出 文本 数字 | 更新日期: 2023-09-27 17:58:16

分配

  1. 创建一个Windows应用程序,在单个字段中接受整数作为输入,每次一个
  2. 按钮"处理"会在输入字段的正下方显示该数字,但前提是该数字大于当前显示的数字(或是处理的第一个数字)。处理完零(0)后,立即停止接受更多输入
  3. 分配的第三部分:显示(在输入字段上方)所有处理的数字的总和

这就是我的任务。

到目前为止,我已经完成了作业的第一部分和第三部分。我不知道如何开始第二部分。到目前为止,我只有

 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;
        }
    }
}

这就是我的。。但是这个程序并不像我希望的那样工作…我做错了什么?

使数字在文本框中键入时一个接一个地出现,但也使它们在0出现时相加

将输入的数字存储在标签中效果不佳。您可能会受到表单中标签数量的限制,或者需要动态创建标签。你可以将数字存储在一个数组或列表中,但实际上你根本不必存储数字,你可以保留数字的总和,并在处理完每个数字后忘记它。

将当前显示的数字存储在变量中。如果你的程序不需要处理负数,你可以让它从零开始:

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?
}