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

时间:2013-02-15 23:34:43

标签: c# arrays

这是作业:

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

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

第二个输出 - 在列表视图中显示两列,其中包含以下信息 -

column1 - 输入的数字,

column2 - 每个数字对总和贡献的百分比。

到目前为止,我有这个:

    {
        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();
    }
}

基本上,我唯一需要完成的就是制作最后两列.. soo ..

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

因此,例如,如果我将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

1 个答案:

答案 0 :(得分:2)

<强>更新

问题不是很清楚。感谢@ChristofferLette先生,我意识到,如果我们想要输入15 21 12 24 and etc这样的数字,或者OP TextBox有一个仅允许的功能的时间或内容

这将是解决方案和建议,TextBox的功能是否应该允许 , 退格所有数字,提示是,我们需要将数字分开,这样我们就可以得到两个,三个或四个等。数字并应用.RegEx Class

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