Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2014, 21:26   #1
sanela
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 19
Стрелка Заполнение записями listView со столбцами

Приложение Windows Forms C# (.NET F... 4.0)
Вх. дн. : некие подстроки из String..
Эти подстроки распределить по столбцам в listView.
Не получается добавление записей в 3 или 4 столбцы.
Подскажите :-)
sanela вне форума Ответить с цитированием
Старый 16.03.2014, 12:11   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Что не получается? Ваши попытки в коде бы увидеть.
phomm вне форума Ответить с цитированием
Старый 17.03.2014, 14:22   #3
sanela
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 19
По умолчанию

Не много разобрался, но все равно ошибки. Может что-то криво... хотелось узнать что именно и как правильно.
В общем, чего-то не понимаю... надеюсь поможете разобраться
Если открывать по одному файлу, то работает. При попытке открыть несколько, выдает: "Индекс и длина должны указывать на позицию в строке.
Имя параметра: length"
*

Код:
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult dr = this.openFileDialog1.ShowDialog();
            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                String t1 = "";
                int i = 0;
                foreach (String file in openFileDialog1.FileNames)
                {
                    //textBox1.AppendText(file + "\n");
                    StreamReader Contents = new System.IO.StreamReader(file, System.Text.Encoding.GetEncoding("UTF-8"));
                    String S_Contents = Contents.ReadToEnd();
                    Contents.Close();

                    textBox1.AppendText(S_Contents);
                    int ContentsIndex = S_Contents.LastIndexOf("name") + 4;
                    while (S_Contents.Substring(ContentsIndex, 1) != (":"))
                    {
                        t1 = t1 + (S_Contents.Substring(ContentsIndex, 1));
                        ContentsIndex = ContentsIndex + 1;
                    }
                    int t2 = Convert.ToInt32(t1);
                    ContentsIndex = ContentsIndex + 1;
                    listView1.Items.Add(i.ToString(), S_Contents.Substring(ContentsIndex, t2), 0);//*Ошибка
                    i = i + 1;
                    textBox2.AppendText(S_Contents.Substring(ContentsIndex, t2));
                    S_Contents.Remove(0);
                }
            }
        }
sanela вне форума Ответить с цитированием
Старый 17.03.2014, 15:07   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

В "S_Contents" меньше букв, чем ContentsIndex+t2, вот и все
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 17.03.2014, 18:51   #5
sanela
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 19
По умолчанию

Спасибо, я разобрался. Ошибкой было присвоение значение пустой строки в переменную String t1 = "";. Она находилась вне цикла foreach. При каждом входе в цикл хранила предыдущие значения...

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

Попутно подскажите как изменить кодировку ASCII на UTF-8 переменной PS_Contents (String)
Код:
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult dr = this.openFileDialog1.ShowDialog();
            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                int i = 0;// Номер строки listView1
                foreach (String file in openFileDialog1.FileNames)
                {
                    //Получаю содержимое файла
                    StreamReader Contents = new StreamReader(file, System.Text.Encoding.GetEncoding("ASCII"));
                    String S_Contents = Contents.ReadToEnd();
                    Contents.Close();

                    //Определяю длину нужной подстроки
                    String length1 = "";//Длина необходимой подстроки
                    int ContentsIndex = S_Contents.LastIndexOf("name") + 4;//Инедкс наденной подстроки, 
                    while (S_Contents.Substring(ContentsIndex, 1) != (":"))
                    {
                        length1 = length1 + (S_Contents.Substring(ContentsIndex, 1));
                        ContentsIndex = ContentsIndex + 1;
                    }

                    //Нахожу подстроку
                    ContentsIndex = ContentsIndex + 1;
                    int length2 = Convert.ToInt32(length1);
                    String PS_Contents = S_Contents.Substring(ContentsIndex, length2);
                    listView1.Items.Add(i.ToString(), PS_Contents, 0);
                    i = i + 1;
                    S_Contents.Remove(0);
                    PS_Contents.Remove(0);
                }
            }
        }
sanela вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение ListView из XAML DrHolera WPF, UWP, WinRT, XAML 1 31.07.2013 21:31
Заполнение ListView swoy45 Помощь студентам 15 14.01.2013 15:58
Плавное заполнение ListView в WPF Radical_Edward WPF, UWP, WinRT, XAML 0 26.05.2012 19:27
WPF Listview заполнение столбцов ilsinho_diaz WPF, UWP, WinRT, XAML 1 13.03.2012 18:51
Заполнение Listview из текстового файла tawreos C# (си шарп) 1 04.10.2011 09:35