-1

这是作业:

任务 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

4

1 回答 1

2

更新:

问题不是很清楚。感谢@ChristofferLette 先生,我意识到,如果我们想输入一个数字,15 21 12 24 and etc但 OPTextBox有一个只允许输入数字的功能。

这将是解决方案和建议,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);
    }
于 2013-02-15T23:38:40.773 回答