C# 如何将数字格式的文本框输入存储到列表中?

C# 如何将数字格式的文本框输入存储到列表中?,c#,arrays,C#,Arrays,这是任务: 任务1-编写一个Windows应用程序,该应用程序接受任何数量的正数值,该数值由按钮输入。用户点击另一个按钮,随时处理所有输入的数据。结果输出应为: 第一次输出-输入的所有n个数字的总和 第二个输出-在listview上显示包含以下信息的两列- 第1列-输入的数字 第2列-每个数字占总数的百分比 到目前为止,我有: { InitializeComponent(); } double number = 0, total = 0, numDisp

这是任务:

任务1-编写一个Windows应用程序,该应用程序接受任何数量的正数值,该数值由按钮输入。用户点击另一个按钮,随时处理所有输入的数据。结果输出应为:

第一次输出-输入的所有n个数字的总和

第二个输出-在listview上显示包含以下信息的两列-

第1列-输入的数字

第2列-每个数字占总数的百分比

到目前为止,我有:

    {
        InitializeComponent();
    }

    double number = 0, total = 0, numDisplay;
    string[] numbers;

    private void button1_Click(object sender, EventArgs e)
    {
        {

        }
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
        number = double.Parse(textBox1.Text);
        if (number > 0)
        {
            total += number;
            textBox1.Text = number.ToString();
            numDisplay = double.Parse(textBox1.Text);
            textBox1.Clear();
        }
    }

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsDigit(e.KeyChar) || Char.IsControl(e.KeyChar)) { }
        else if (e.KeyChar == '.' && textBox1.Text.IndexOf(".") == -1) { }
        else
        {
            e.Handled = true;
        }
    }

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click_1(object sender, EventArgs e)
    {
        label1.Text = "sum: " + total.ToString();
    }
}
基本上,我唯一需要完成的就是制作最后两列。。苏

考虑到我对这个项目完全陌生。。。 如何将输入到文本框中的数字存储起来,但在按下按钮时将其显示在列表视图中?我想储存任何数量的。。。这意味着列表将被循环

例如,如果我将1,2,3,4,5作为输入,我希望它在列表视图的第一列中显示为1-5,在我的第一列中向下,对于第二列,我希望数字占总和的百分比,所以在1-5的情况下, 1/15 1+2+3+4+5=15, 2/15, 3/15, 4/15, 5/15 始终按100更新:

这个问题不是很清楚。多亏了@Christofferette先生,我意识到,如果我们想输入一个数字,比如15 21 12 24等等,我会在什么时候输入,但OP的文本框有一个只允许输入数字的功能

这将是解决方案和建议,文本框的功能应该允许,退格和所有数字,提示是,我们需要分开数字,这样我们可以得到两位、三位或四位等数字,并应用

那么


如果你说出你迄今为止所做/尝试的事情,社区将更有可能帮助你。表明你已经做了一些努力,这会有很大帮助。提示,将double.Parse。。用try catch块捕捉非数字的解析错误。在levibotelho,我不知道从哪里开始。。说到理解数组,我简直不知所措。。我知道我应该使用数组,但我似乎找不到任何关于在listview@Christoffee-lette上存储或列出数字的信息是的,我转发了一篇旧文章,因为我希望社区能帮助我解决我的困境at@PechengChang下次试着把你的问题格式化,具体点,避免负面评论或否决票对于你的问题,如果我想把它放在listview工具上,我会怎么做呢。我不想把它放在标签上1.text.我的答案已经更新了。请检查。@spajce好吧,让我们从魔法数字15开始。。。每一个可能的输入的总和是15吗?很可能不是。thanx给了@Christofferette先生一些提示,因为OP并没有告诉你这个数字Di实际上希望子项除以总金额,这是怎么可能的
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar)
                && !char.IsDigit(e.KeyChar)
                && e.KeyChar != ',')
            e.Handled = true;
    }
   private void button1_Click(object sender, EventArgs e)
    {
        listView1.Items.Clear();
        var text = Regex.Split(textBox1.Text, @"\D+");
        var t = text.Select(c => decimal.Parse(c)).Sum(); //<--Get all the total
        foreach (var i in text)
        {
            ListViewItem item = new ListViewItem();
            item.Text = i;
            item.SubItems.Add(((decimal.Parse(i) / t) * 100).ToString());
            listView1.Items.Add(item);
        }

        //decimal total = listView1.Items.Cast<ListViewItem>()
        //                         .Select(c => decimal.Parse(c.SubItems[1].Text))
        //                         .Sum();

        //ListViewItem item2 = new ListViewItem();
        //item2.Text = "Total:";
        //item2.SubItems.Add(total.ToString("#,#0.00"));
        //listView1.Items.Add(item2);
    }