-1

これは割り当てです:

タスク 1 - ボタンで入力される任意の数の正の値を受け入れる Windows アプリケーションを作成します。ユーザーは別のボタンをクリックして、入力されたすべてのデータをいつでも処理できます。結果の出力は次のようになります。

最初の出力 - 入力された n 個の数値すべての合計

2 番目の出力 - リストビューで、次の情報を含む 2 つの列を表示します。

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

基本的に、私が仕上げる必要があるのは、最後の 2 つの列を作成することだけです..そう..

私はこのプログラムにまったく慣れていないことを考慮して...テキストボックスに入力された数値を取得して保存し、ボタンを押したときにリストビューに表示するにはどうすればよいですか? どんな量でも保存したい...リストがループすることを意味します。

たとえば、入力として 1,2,3,4,5 を配置した場合、リスト ビューの最初の列に 1-5 として最初の列を下に表示し、2 番目の列には合計に対する数値のパーセンテージ。この場合、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のですが、OPにはその数字だけTextBoxを許可する機能があることに気づきました。

これが解決策と提案になります。バックスペースすべての数字TextBoxを許可する必要がある場合の機能です。ヒントは、数字を区切る必要があるため、2つ、3つ、または4つなどを取得できるようにすることです。数字と数字を適用します。,.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 に答える