Страница: 1 |
Вопрос: ListView, как сделать сетку, или это не ListView? | Добавлено: 04.06.06 20:39 |
Автор вопроса: ![]() |
Вообщем нужно сделать как бы таблицу и сетку, как на этом скриншоте:
http://img437.imageshack.us/img437/4458/12fv1.jpg я чото разобраться не могу в каком элементе в VB.NET 2005 сделать такую сетку? в моём учебнике про такой элемент не слова :( подскажите, и если не трудно можно маленький пример? :) |
Ответы | Всего ответов: 13 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #1 | Добавлено: 04.06.06 22:58 |
Ты абсолютно прав, это обычный ListView..
Тебе надо лишь установить соответствуйщий стиль контрола в свойствах и там же сделать,чтобы он отображал CheckBox'ы... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #2 | Добавлено: 04.06.06 23:07 |
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ListView1 .View = View.Details .CheckBoxes = True .GridLines = True .Columns.Add("MyColumn 1", 150, HorizontalAlignment.Left) .Columns.Add("MyColumn 2", 150, HorizontalAlignment.Center) .FullRowSelect = True End With Dim Item As ListViewItem = ListView1.Items.Add("MyRow 1" ![]() Item.SubItems.Add("MyRow 1 Details" ![]() Item.Checked = True End Sub |
Номер ответа: 3 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #3 | Добавлено: 05.06.06 08:58 |
Спасибо! всё как надо, ещё вопрос, как добавить Items в нужный мне Columns, а то всё добавляеться в первый, если по скрину то: нужно добавлять в ДАННЫЕ а всё добавляеться в ПРОБЛЕМА, спасибо |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #4 | Добавлено: 05.06.06 09:17 |
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With ListView1 .View = View.Details .CheckBoxes = True .GridLines = True .Columns.Add("MyColumn 1", 150, HorizontalAlignment.Left) .Columns.Add("MyColumn 2", 150, HorizontalAlignment.Center) .FullRowSelect = True End With Dim Item As ListViewItem = ListView1.Items.Add("MyRow 1" ![]() Item.SubItems.Add("MyRow 1 Details" ![]() Item.Checked = True End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ListView1.Items.Count = 0 Then Return Dim Item As ListViewItem = ListView1.Items(0) Item.SubItems(0).Text = "ДАННЫЕ" Item.SubItems(1).Text = "ПРОБЛЕМА" End Sub End Class |
Номер ответа: 5 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #5 | Добавлено: 05.06.06 13:08 |
ListView1.Items(0).Text = "тест"
всё удачно добавляеться но в 1 колонку, если меняю индекс на ListView1.Items(2).Text = "тест"
НИЧЕГО не добавляеться ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #6 | Добавлено: 05.06.06 13:31 |
А никакой проблемы нет.. эт ручки у тебя кривые и глаза невнимательные! ![]() Для доступа к данным используется коллекция SubItems!!! Я вообще пример для чего писал????????? ListView1.Items(2).Text = "тест"
Таким образом ты запишешь данные в ПЕРВЫЙ СТОЛБЕЦ ТРЕТЬЕЙ СТРОКИ!!!!!! (при условии,что она у тебя существует...) Ты должен понимать, что Items-это коллеция строк, а SubItems-это колекция колонок конкретной строки!!! |
Номер ответа: 7 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #7 | Добавлено: 05.06.06 13:44 |
![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #8 | Добавлено: 05.06.06 14:07 |
![]() ![]() У меня есть цикл For, и так, в цикле ищеться информация в txt файле и если строка подходит под описание она должна добавляться в 1 колонку, вот таким способом ListView1.Items(0).Text = "тест"
всё добавляеться попорядку, т.е с верху вниз, а если вот таким Item.SubItems(0).Text = "тест"
всё записываеться в одну строку! т.е нашёл одно значение записал, нашол другое переписывает эту строку и так далее, а как можно заставить добавляться вниз по списку а не переписывать одну и туже строку? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #9 | Добавлено: 05.06.06 15:05 |
ZXC,
блин, старик.. ну ты даешь! ![]() Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With ListView1 .View = View.Details .CheckBoxes = True .GridLines = True .Columns.Add("Детали", 150, HorizontalAlignment.Left) .Columns.Add("Проблема", 150, HorizontalAlignment.Left) .Columns.Add("Ключ реестра", 150, HorizontalAlignment.Left) .FullRowSelect = True End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'В теле ты должен создать строку и добавить её в ListView For i As Integer = 1 To 10 'Создаешь новую строчку и добавляешь её в коллекцию Items 'В переменной MyRow у тебя будет ссылка на ВСЮ строку!! Dim MyRow As ListViewItem = ListView1.Items.Add("Детали " & i) 'НУЛЕВОЙ СТОЛБЕЦ 'Дальше добавляем данные в остальные столбцы ЭТОЙ ЖЕ строки MyRow.SubItems.Add("Проблема " & i) 'ПЕРВЫЙ СТОЛБЕЦ MyRow.SubItems.Add("Ключ реестра " & i) 'ВТОРОЙ СТОЛБЕЦ 'И так заполняешь данными все столбцы твоей строки 'Если у тебя столбцов больше до добавь еще MyRow.SubItems.Add(.......) 'столько раз сколько у тебя столбцов!!!! Next 'После выполнения этого кода твой ListView будет содержать 10 строк с данными End Sub End Class |
Номер ответа: 10 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #10 | Добавлено: 05.06.06 17:49 |
а чо так всё трудно? ![]() ![]() ![]() Вот это я считаю просто: ListView1.Items(0).Text = "тест" Но вечно в 0 добавляеться ![]() |
Номер ответа: 11 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #11 | Добавлено: 05.06.06 17:56 |
а чо так всё трудно? ![]() ![]() ![]() Вот это я считаю просто: ListView1.Items(0).Text = "тест" Но вечно в 0 добавляеться ![]() |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #12 | Добавлено: 05.06.06 22:28 |
а чо так всё трудно?
![]() ![]() Да чтож ты тут трудного нашел? это же проще пареной репы!! По ходу ты так нифига и не понял что к чему.. ладно, давай еще раз и все с самого начала... следи за мыслью... 1.ListView имеет коллекцию строк, называется она Items 2. чтобы добавить строку в эту коллекцию ты должен вызвать метод Items.Add (пример вызова ты видел выше) 3. Каждая строка (ListViewItem) имеет коллекцию подстрок или другими словами SubItems, что в твоем случае косвенно можно назвать коллекцией столбцов.. 4.Предположим у тебя есть 3 столбца.. При вызове метода Items.Add(т.е. при добавлении новой строки) автоматически создается элемент SubItems с индексом 0 (или SubItems(0)).. другими словами при добавлении строки ты сразу же (незаметно для себя) заполняешь НУЛЕВОЙ столбец... А вот чтобы заполнить остальные столбцы ты должен в коллекцию SubItems(подстрок) добавить снова данные.. а для этого ты снова должен вызвать метод Add.. но на сей раз уже НЕ для Items а для SubItems.. таким образом вызывая каждый раз метод SubItems.Add ты заполняешь остальные столбцы конкретной строки.. Идем дальше.. и вернемся немного назад.. ListView1.Items(0).Text = "тест"
Давай разберемся что у тебя тут происходит.. Покольку ты обращаетшься к строке с индексом НОЛЬ,и ЯВНО не указываешь какой то SubItems, то по умолчанию меняется значение в НУЛЕВОМ столбце!! Таким образом твоя запись будет абсолютна идентична этой.. ListView1.Items(0).SubItems(0).Text = "тест"
Мысль улавливаешь??? Так вот, чтобы изменить данные во ВТОРОМ столбце НУЛЕВОЙ СТРОКИ (поскольку ты указал 0) ты должен написать следующее: ListView1.Items(0).SubItems(1).Text = "тест"
Лично я не люблю такую нотацию, поэтому я обычно пишу так: Dim Item As ListViewItem = ListView1.Items(0)
Тем самым получаю ссылку на нужную мне строку. ( в данном случае на нулевую строку при условии что она у тебя УЖЕ создана) Точно так же ты получаешь ссылку на строку вызывая метод Add Dim Item As ListViewItem = ListView1.Items.Add("MyRow 1"
![]() Только в этом случае ты получаешь ссылку на только что добавленную(новую) строку!! Итак, когда у тебя есть ссылка на строчку, ты можешь работать с коллекцией столбцов ЭТОЙ строки Item.SubItems.Add("MyRow 1 Details"
![]() т.е. тут мы заполнили данными следуйщий столбец и т.д... Идем дальше... Предположим у тебя есть 5 готовых строк.. чтобы изменить данные скажем во втором столбце третьей строки ты должен написать следущее: ListView1.Items(2).SubItems(1).Text = "тест"
где,2-это третья строка,1-второй столбец (поскольку нумерация начинается с нуля) НО!!! если ты при создании строки не вызывал SubItems.Add для того чтобы запонить второй столбец, значит при попытке изменить в нем данные ты получишь ошибку.. так как на момент вызова этот эелемент коллекции у тебя будет равен Nothing.. Надеюсь понятно объяснил??? Если же нет... увы, на большее я не способен.. и помочь больше мне нечем... |
Номер ответа: 13 Автор ответа: ![]() ![]() Вопросов: 30 Ответов: 106 |
Профиль | Цитата | #13 | Добавлено: 08.06.06 20:30 |
спасибо....за такую огромную помощь...ещё раз спасибо.. теперь ВСЁ по ListView понятно ![]() ![]() |
Страница: 1 |
|