Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163
1

ListBox

20.02.2011, 13:57. Показов 1813. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как лучше всего реализовать?
По нажатию кнопки button2 должно выполняться следующее:
если name совпадает с каким-либо другим name, то их amount складывается.
После всех этих подсчетов - отобразить в листбокс.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class Form1 : Form
    {
        string name;
        int amount;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            name = txtName.Text;
            amount = Convert.ToInt32(txtAmount.Text);
            listBox1.Items.Add(string.Format("{0} {1}", name, amount));
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
        }
    }
Добавлено через 15 часов 25 минут
Неужели никто не знает?! О_о
Ну может там через индексы как то или еще как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2011, 13:57
Ответы с готовыми решениями:

ListBox
Доброго времени суток. Хочу найти в ListBox айтем по части его содержимого В листе содержится:...

ListBox
Доброго времени суток ув. форумчане , вопрос касающийся LisBox'a Вообщем есть 2 LisBox'a , 1...

ListBox
Добрый день ув. форумчане , вопрос следующий. OpenFileDialog openFileDialog1 = new ...

listbox
Здраствуйте! У меня есть файл, большого обьема, я считываю 1,5 млн байтов из него и помещаю...

8
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
20.02.2011, 16:48 2
Shue, поясни по человечески, что с чем сравнивать хочешь.
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
20.02.2011, 17:15 3
Действительно не понятно как то написанно
Я понял так:
изначально имеется лист бокс в нем след данные

значение1 параметр1
значение2 параметр2
значение1 параметр3
значение4 параметр4
значение4 параметр2

в итоге получается

значение1 параметр1параметр3
значение2 параметр2
значение4 параметр4параметр2

В таком случает вот код, конечно же возможно не самый удачный:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            string[] temp_mas;
            string[] temp_mas2;
            for(int i=0;i<listBox1.Items.Count-1;i++)
            {
                temp_mas=listBox1.Items[i].ToString().Split(' ');
                for(int j=i+1;j<listBox1.Items.Count;j++)
                {
                    temp_mas2=listBox1.Items[j].ToString().Split(' ');
                    if (temp_mas[0] == temp_mas2[0])
                    {
                        listBox1.Items[i] = listBox1.Items[i].ToString() + temp_mas2[1];
                        for (int k = j; k < listBox1.Items.Count - 1; k++)
                            listBox1.Items[k] = listBox1.Items[k + 1];
                        listBox1.Items.RemoveAt(listBox1.Items.Count - 1);
                    }
                    
                }
            }
Добавлено через 8 минут
не заметил что amount интовская переменная тогда изменить код так:
C#
1
2
3
4
5
.....
if (temp_mas[0] == temp_mas2[0])
{
     listBox1.Items[i] = temp_mas[0]+" "+ Convert.ToString(int.Parse(temp_mas[1].ToString())+ int.Parse(temp_mas2[1].ToString()));
.....
0
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163
20.02.2011, 17:32  [ТС] 4
Цитата Сообщение от zelen Посмотреть сообщение
изначально имеется лист бокс в нем след данные

значение1 параметр1
значение2 параметр2
значение1 параметр3
значение4 параметр4
значение4 параметр2

в итоге получается

значение1 параметр1параметр3
значение2 параметр2
значение4 параметр4параметр2
значение1 параметр1 + параметр3
значение2 параметр2
значение4 параметр4 + параметр2

amount-интовская переменная.
Если не до конца понятно, что я хотел написать, то можно объяснить примерно так:

Хлеб 25
Вода 10
Вода 11
Хлеб 5
Вода 2

Получаем:

Хлеб 30
Вода 23

zelen, неужели код должен быть такой сложный? попроще никак нельзя сделать?
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
20.02.2011, 17:36 5
тут правильнее было бы использовать для хранения значений какую-нибудь коллекцию или массив, а в
listBox только отображать
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
20.02.2011, 17:45 6
ну просто еcли у вас уже имеется listBox, то ничего более легкого я придумать не могу. Если вам подходит то проверяете на повторения на этапе ввода, будет поменьше кода. А сама суть того что я написал вроде как не тяжела, разве что выглядит не очень здраво.
0
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163
20.02.2011, 17:52  [ТС] 7
Цитата Сообщение от zelen Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            string[] temp_mas;
            string[] temp_mas2;
            for (int i = 0; i < listBox1.Items.Count - 1; i++)
            {
                temp_mas = listBox1.Items[i].ToString().Split(' ');
                for (int j = i + 1; j < listBox1.Items.Count; j++)
                {
                    temp_mas2 = listBox1.Items[j].ToString().Split(' ');
                    if (temp_mas[0] == temp_mas2[0])
                    {
                        listBox1.Items[i] = temp_mas[0] + " " + Convert.ToString(int.Parse(temp_mas[1].ToString()) + int.Parse(temp_mas2[1].ToString()));
                        for (int k = j; k < listBox1.Items.Count - 1; k++)
                            listBox1.Items[k] = listBox1.Items[k + 1];
                        listBox1.Items.RemoveAt(listBox1.Items.Count - 1);
                    }
 
                }
            }
Некорректно считает.
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
20.02.2011, 18:15 8
ну что же, замечание абсолютно справедливо. Вот исправленный код. Вроде должен работать)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string[] temp_mas;
string[] temp_mas2;
for(int i=0;i<listBox1.Items.Count-1;i++)            
    for(int j=i+1;j<listBox1.Items.Count;j++)
    {
         temp_mas = listBox1.Items[i].ToString().Split(' ');
         temp_mas2=listBox1.Items[j].ToString().Split(' ');
         if (temp_mas[0] == temp_mas2[0])
         {
              listBox1.Items[i] = temp_mas[0] + " " + Convert.ToString(int.Parse(temp_mas[1].ToString()) + int.Parse(temp_mas2[1].ToString()));
              for (int k = j; k < listBox1.Items.Count - 1; k++)
                   listBox1.Items[k] = listBox1.Items[k + 1];
              listBox1.Items.RemoveAt(listBox1.Items.Count - 1);
              j--;
         }
     }
2
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163
20.02.2011, 18:30  [ТС] 9
Цитата Сообщение от zelen Посмотреть сообщение
ну что же, замечание абсолютно справедливо. Вот исправленный код. Вроде должен работать)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string[] temp_mas;
string[] temp_mas2;
for(int i=0;i<listBox1.Items.Count-1;i++)            
    for(int j=i+1;j<listBox1.Items.Count;j++)
    {
         temp_mas = listBox1.Items[i].ToString().Split(' ');
         temp_mas2=listBox1.Items[j].ToString().Split(' ');
         if (temp_mas[0] == temp_mas2[0])
         {
              listBox1.Items[i] = temp_mas[0] + " " + Convert.ToString(int.Parse(temp_mas[1].ToString()) + int.Parse(temp_mas2[1].ToString()));
              for (int k = j; k < listBox1.Items.Count - 1; k++)
                   listBox1.Items[k] = listBox1.Items[k + 1];
              listBox1.Items.RemoveAt(listBox1.Items.Count - 1);
              j--;
         }
     }
то, что нужно! благодарю.
0
20.02.2011, 18:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2011, 18:30
Помогаю со студенческими работами здесь

ListBox
Как у выбранного элемента в списке вернуть id ? Генерируется список но не понимаю как вернуть id ....

listBox
?привет! Дано a, b, c, step, в листбоксе должны появлятся все результаты... а у меня только один......

ListBox
Как сделать сортировку чисел по убыванию в listbox'e?

Фокус в ListBox
Как сделать что бы ListBox не получал фокус ввода, но при этом в самом ListBox можно было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru