2013-02-15 1 views
-1

Это задание:Как хранить входы текстовых полей в числовом формате в список?

Задача 1- Напишите приложение Windows, которое принимает любое количество положительных значений, вводимое кнопкой. Пользователь нажимает другую кнопку для обработки всех введенных данных в любое время. В результате чего вывод должен быть:

первого выхода - сумма все п введенных чисел,

второго выход - на шоу две списка следует колонны со следующим информационно-

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, спустился вниз по моей первой колонке и для моего столбца Я хотел бы, чтобы процентные числа чисел были равны сумме, поэтому в этом случае 1-5, 1/15 (1 + 2 + 3 + 4 + 5 = 15), 2/15, 3/15, 4/15, 5/15 все времена по 100

+0

Сообщество было бы больше шансов, чтобы помочь вам, если вы говорите, что вы сделали/пытались до сих пор. Показ о том, что вы приложили немало усилий, долгий путь. –

+0

Наконечник, Оберните двойной.Правый (..) с помощью блоков catch catch, чтобы поймать ошибки разбора из числа. –

+0

у levibotelho я просто не знаю, с чего начать .. Я просто потерял, когда дело дошло до понимания массивов ..я знаю, что я предполагаю использовать массивы, но я не могу найти какую-либо информацию о хранении или листинге чисел в списке –

ответ

2

UPDATE:

вопрос не очень понятно. Спасибо г-ну @ КристофферЛетту, я понял, когда или что, если мы хотим ввести число, например 15 21 12 24 and etc, но у TextBox OP была функция, позволяющая номеру только.

Это будет решение и предложение, Функция 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); 
    } 
+0

, поэтому, если я хочу, чтобы это было в инструменте listview, как бы я это сделал. я не хочу этого на label1.text .. –

+0

мой ответ обновлен. пожалуйста, проверьте. – spajce

+1

@spajce Хорошо, давайте начнем с волшебного номера 15 ... Будет ли каждый возможный вход иметь сумму 15? Скорее всего, нет. –

Смежные вопросы