Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление повторяющихся item'ов listbox'a 
:(
    Опции темы
derek
Дата 22.12.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Допустим есть listbox с такими item'ами
1
2
3
3
3
5
3
6

на выходе должны получить
1
2
3
5
6

ну не обязательно в таком порядке, просто нужно чтобы 3-ка осталось одна...
как сделать?

спасибо
PM MAIL   Вверх
mr.DUDA
Дата 22.12.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Загнать итемы в Dictionary, очистить листбокс, вернуть из dictionary.Keys в листбокс.


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 22.12.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Полу  smile 
Хотел так:
Цитата
Наследуешься от ListBox и от ObjectCollection.
В ListBox переопределяешь свойство Items чтобы оно возвращало твою ObjectCollection.

В твоей ObjectCollection переопределяешь методы Add и AddRange



Вот только засада, они не виртуальные  smile  smile  smile  smile  smile
Странно  smile 
PM MAIL WWW ICQ   Вверх
derek
Дата 22.12.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



ладно ок. теперь такой вопрос. Как удалить повторяющиеся элменты Dictionary?
PM MAIL   Вверх
ivashkanet
Дата 22.12.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(derek @  22.12.2006,  10:50 Найти цитируемый пост)
Как удалить повторяющиеся элменты Dictionary? 

В том то и прикол, что их не может быть smile
Каждый итем у Dictionary уникален  smile 
PM MAIL WWW ICQ   Вверх
DarkDragon
Дата 22.12.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Алгоритм:
Код

        private void ClearDoubleItems(ListBox lb)
        {
            string temp1 = null;
            string temp2 = null;
            int max = lb.Items.Count - 1;
            int maxtemp = lb.Items.Count - 1;
            for (int p = 0; p <= maxtemp; p++)
            for (int i = 0; i <= max; i++)
            {
                temp1 = Convert.ToString(lb.Items[i]);
                if (i != lb.Items.Count - 1)
                for (int l = i+1; l <= max; l++)
                {
                    temp2 = Convert.ToString(lb.Items[l]);
                    if (string.Compare(temp1, temp2) == 0)
                    {
                        lb.Items.RemoveAt(l);
                        max--;
                    }
                }
            }
        }


PM MAIL   Вверх
derek
Дата 27.12.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



народ, я вас уже достал наверное но никак не могу понять философию listbox'a. Точнее у меня проблема с организацией цикла.  smile 
есть 2 листбокса
первый с item'ами - 1 2 3
второс такими - 3 4 5

нужно сформировать 3 список с такими item'ами - которые входят в первый список + они не входят во второй. т.е. 3-й список должен содержать значения 1 и 2...

пробую так

Код

 for (int i = 0; i <= 10; i++)
                {

                    for (int j = 0; j <= 10; j++)
                    {

                        if ((int)L1.Items[i] != (int)L2.Items[j])
                        {
                            L3.Items.Add(L1.Items[i]);

                        }

                    }

                }


но так он работает не правильно, в L3 попадают значения которых там не должно быть, что впринципе логично, ведь я сравниваю значения поочередно...как сделать правильно

*создание дополнительных  списков (listbox'ов) возможно, но не желательно. Но если без дополнительного листбокса получится слишком сложно, то тогда пофигу - мне впринципе главное сделать максимально просто...


PM MAIL   Вверх
mr.DUDA
Дата 27.12.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(derek @  27.12.2006,  08:16 Найти цитируемый пост)
но никак не могу понять философию listbox'a

Вот это и видно. Визуальный контрол вы используете для организации и обработки данных, то же самое что забивать гвозди микроскопом.


--------------------
user posted image
PM MAIL WWW   Вверх
derek
Дата 4.1.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



mr.DUDA, ну хорошо. напишите хотя бы алгоритм. 
с нынешнего момента буду листбоксы юзать для вывода данных. 
PM MAIL   Вверх
mr.DUDA
Дата 4.1.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Если делать по простому, то так:
Код
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> firstList = new List<int>();
        List<int> secondList = new List<int>();

        // заполнение списков (можно взять хоть из ListBox, хоть откуда угодно)
        firstList.Add(1);
        firstList.Add(2);
        firstList.Add(3);
        secondList.Add(3);
        secondList.Add(4);
        secondList.Add(5);

        // добавляем числа, не входящие в два списка сразу
        List<int> resultList = new List<int>();
        foreach (int x in firstList)
        {
            if (!secondList.Contains(x))
                resultList.Add(x);
        }
        foreach (int x in secondList)
        {
            if (!firstList.Contains(x))
                resultList.Add(x);
        }

        // посмотрим, что получилось
        foreach (int x in resultList)
            Console.WriteLine(x);
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.