Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > вопрос по listview


Автор: derek 23.8.2006, 21:44
Вообщем возникла потребность с помощью листвью организовать таблицу в 3 колонки, которая заполняется данными....по задумке потом должна будет выделяться вся строка, и братся числовое значение одной из колонок.

больше всего подходит View.Details но как организовать заполнение columns - не могу понять... просьба кинуть какой нить пример. спасибо

Автор: mr.DUDA 24.8.2006, 08:30
Я ж скидывал пример... smile 

Ещё раз: сначала создаётся ListViewItem (отдельно от listView), заполняются его колонки (свойство SubItems), потом заполненный ListViewItem добавляется в listView. Количество и название колонок настраиваются в дизайнере форм (свойство Columns, или ссылка Edit Columns в окне Properties для листа).

Автор: derek 24.8.2006, 15:01
вообщем я так понял что listview- заполняется строками. ну по крайней мере при View.Details  ..listviewitem это элемент строки, а subitems тоже  элементы строки (вспомогательные)....

есть вопросы...

1.  имеет ли значение, то как оформлять ListViewItem через конструктор или ручками
2.  как получать доступ к числовому значению ListViewItem. думаю что как то через SelectedItem, но не выходит у меня почему то ((( 

заранее спасибо

Автор: mr.DUDA 24.8.2006, 15:22
Цитата(derek @  24.8.2006,  15:01 Найти цитируемый пост)
1.  имеет ли значение, то как оформлять ListViewItem через конструктор или ручками

Через конструктор - лучше по производительности.

Цитата(derek @  24.8.2006,  15:01 Найти цитируемый пост)
2.  как получать доступ к числовому значению ListViewItem. думаю что как то через SelectedItem, но не выходит у меня почему то ((( 


Код
                if (listView1.SelectedItems.Count > 0)
                {
                    ListViewItem lvi = listView1.SelectedItems[0];
                    string strColumn0 = lvi.SubItems[0].Text;
                    string strColumn1 = lvi.SubItems[1].Text;

                    // ...

                    int valueColumn0 = int.Parse(strColumn0);
                    int valueColumn1 = int.Parse(strColumn1);

                    // ...
                }

Автор: derek 24.8.2006, 21:26
спасибо огромное, все получилось...
последний вопрос )
я делаю чтобы выделялась вся строка, и когда listview неактивен то выделение пропадает, можно ли как нить сделать чтобы даже при неактивном listviewe выделенная строчка оставалась выделенной...

решение вопроса не критично, но очень желательно )

Добавлено @ 21:32 
все,  ненадо! уже сам нашел как ;)

Автор: derek 11.12.2006, 02:47
снова появился вопрос по этой теме...

я сейчас портирую одно приложение на Pocket PC,  в том приложении есть ListView с View.Details и из него берется числовое значение, ровно так как мне подсказал mr.DUDA, 
на ПК все замечательно, а вот на Pocket PC к сожалению 'System.Windows.Forms.ListView' does not contain a definition for 'SelectedIndex'. Т.е. я так понимаю "благодарю" компакт фреймворку покета, теперь до числового значения Item'a в Listview не доберешься, или все же есть какой то другой способ?

Автор: mr.DUDA 11.12.2006, 10:04
Есть коллекция SelectedIndices, содержащая номера всех выбранных строк (их может быть более одной).

Автор: derek 11.12.2006, 12:37
mr.DUDA, ну да - это есть. А разве с помощью этого можно добраться до значения Item'a? Мне бы примерчик, если не затруднит ;)...

Автор: mr.DUDA 11.12.2006, 17:35
Пишу без студии, глядя в мсдн:
Код
if (listView1.SelectedIndices.Count > 0)
{
   ListViewItem lvi = listView1.Items [listView1.SelectedIndices[0]];

   // ...

}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)