这是作业:
任务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
答案 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);
}