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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetEnumerator и как с ним работать 
:(
    Опции темы
Berserk
Дата 19.12.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 14.12.2006
Где: Столица Донбасса - Горловка

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



Есть listBox, я выделяю несколько Items и хочу вывести их(выделенные Items) в MessageBox, например. 

Вопрос в следующем smile :

Есть такая штуковина как GetEnumerator, она возвращает список выделенных Items, если я напишу listBox1.SelectedItems.GetEnumerator. Как мне теперь вывести Items из этого GetEnumerator. Возможно есть и другие способы реализации. Благодарен за любую помощь.
  
--------------------
  
PM MAIL ICQ   Вверх
mr.DUDA
Дата 19.12.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Можно foreach-ем их перечислить. Каждый айтем - это object, который можно перевести в строку ToString-ом.


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


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


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

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



Berserk, судя по всему ты недавно в C#, так что GetEnumerator пока не трогай.

Поступаем так:
Код

            StringBuilder sb = new StringBuilder(10 * listBox1.SelectedItems.Count);

            foreach (object item in listBox1.SelectedItems)
            {
                sb.AppendLine(item.ToString());
            }

            MessageBox.Show(sb.ToString());

P.S. StringBuilder используется потому, что он создан именно для накапливания строки. Но вместо него можно было бы использовать обычный string, что снизило бы производительность, но для такого примера это не существенно.
Код

            String s = "";

            foreach (object item in listBox1.SelectedItems)
            {
                s += item.ToString() + "\n";
            }

            MessageBox.Show(s);

P.P.S. Если интересно, что такое Enumerator, то вот так им пользуется foreach
Код

            string s;
            IEnumerator enumerator = strings.GetEnumerator();
            enumerator.Reset();
            enumerator.MoveNext();
            while (enumerator.Current != null)
            {
                s = enumerator.Current;
                // DoSomething
                enumerator.MoveNext();
            }

который соответствует
Код

foreach(string s in stings)
{
// DoSomething
}

PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 19.12.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



Цитата(ivashkanet @  19.12.2006,  13:25 Найти цитируемый пост)
         string s;
            IEnumerator enumerator = strings.GetEnumerator();
            enumerator.Reset();
            enumerator.MoveNext();
            while (enumerator.Current != null)
            {
                s = enumerator.Current;
                // DoSomething
                enumerator.MoveNext();
            }

я может конечно чего то не понимаю, но разве нельзя вот так:
Код

    string s;
            IEnumerator enumerator = strings.GetEnumerator();
            while (enumerator.MoveNext())
            {
                s = enumerator.Current;
                // DoSomething
            }

PM ICQ MSN   Вверх
ivashkanet
Дата 19.12.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Это писал я сам, так что могет быть неоптимально  smile 
Цитата(Wanderer2019 @  19.12.2006,  13:56 Найти цитируемый пост)
я может конечно чего то не понимаю, но разве нельзя вот так:

Можно. И будет то же самое  smile 

Я когда это писал --- очень сильно перестраховывался  smile 
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 19.12.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Прикол, в MSDN пример про Enumerator выглядит так:
Код

      int i = 0;
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      Console.WriteLine( "The Array contains the following values:" );

      while (( myEnumerator.MoveNext() ) && ( myEnumerator.Current != null ))
         Console.WriteLine( "[{0}] {1}", i++, myEnumerator.Current );

т.е. они еще проверяют текущий на null (может это просто перестраховка  smile )

PM MAIL WWW ICQ   Вверх
Berserk
Дата 19.12.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 14.12.2006
Где: Столица Донбасса - Горловка

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



to ivashkanet  С С# я познакомился бувально неделю назад. Огромное спасибо за примеры

Спасибо всем кто не остался равнодушным.  smile 
--------------------
  
PM MAIL ICQ   Вверх
Wanderer2019
Дата 19.12.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



Цитата(ivashkanet @  19.12.2006,  15:51 Найти цитируемый пост)
т.е. они еще проверяют текущий на null (может это просто перестраховка  smile )

ну думаю скорей всего это не перестраховка, а проверка на значние... т.е. по сути примера некоторые объекты могут иметь значение null и тогда выводить их не нужно. Если же уверен, что каждый объект не null, то можно этого не писать.

 smile 
ivashkanet, млин вас не поймешь! думал Дрон пишет =) чего все аватары перекинули то?

Это сообщение отредактировал(а) Wanderer2019 - 19.12.2006, 15:59
PM ICQ MSN   Вверх
ivashkanet
Дата 19.12.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Wanderer2019 @  19.12.2006,  14:57 Найти цитируемый пост)
ну думаю скорей всего это не перестраховка, а проверка на значние... т.е. по сути примера некоторые объекты могут иметь значение null и тогда выводить их не нужно. Если же уверен, что каждый объект не null, то можно этого не писать.

Это я и имел ввиду под перестраховкой  smile 

Вот полный пример:
Код

 public static void Main()  {
 
      // Creates and initializes a new Array.
      String[] myArr = new String[10];
      myArr[0] = "The";
      myArr[1] = "quick";
      myArr[2] = "brown";
      myArr[3] = "fox";
      myArr[4] = "jumped";
      myArr[5] = "over";
      myArr[6] = "the";
      myArr[7] = "lazy";
      myArr[8] = "dog";
 
      // Displays the values of the Array.
      int i = 0;
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      Console.WriteLine( "The Array contains the following values:" );
      while (( myEnumerator.MoveNext() ) && ( myEnumerator.Current != null ))
         Console.WriteLine( "[{0}] {1}", i++, myEnumerator.Current );

   }

Неужели можно подумать, что какой-то из элементов будет null  smile 
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 19.12.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



Цитата(ivashkanet @  19.12.2006,  16:00 Найти цитируемый пост)
Неужели можно подумать, что какой-то из элементов будет null  smile  

MiCrOsOfT  smile 
PM ICQ MSN   Вверх
ivashkanet
Дата 19.12.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Berserk @  19.12.2006,  14:53 Найти цитируемый пост)
Огромное спасибо

Заходите еще

 smile 
Цитата(Wanderer2019 @  19.12.2006,  14:57 Найти цитируемый пост)
ivashkanet, млин вас не поймешь! думал Дрон пишет =) чего все аватары перекинули то?

 smile  smile  smile 
Предлагаю до нового года устроить маскарад
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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