Краткая версия:
Как я могу добавить информацию в определенный столбец и строку в списке?
Более длинная версия:
С некоторыми текстовыми полями и кнопками в другой форме я добавляю элементы в свой список следующим образом
Dim li As ListViewItem
li = Form1.ListView1.Items.Add("1")
li.SubItems.Add(tbName1.Text)
li.SubItems.Add(Form1.tbCount1.Text)
li.SubItems.Add(tbType1.Text)
li.SubItems.Add(Form1.tbStatus1.Text)
Form1.ListView1.EndUpdate()
Form1.ListView1.Refresh()
Это результат пока ...
Tbname1.text
(столбец ниже Channel ) и tbtype1.text
(столбец ниже Type ) указываются в текстовых полях до того, как я нажму кнопку.
Tbcount1.text
в form1 содержит число, основанное на количестве файлов в папке. TbStatus.text
зависит от количества файлов. Этот счетчик привязан к другой кнопке (в конечном итоге к таймеру). Вот почему вы заметите, что Queue и Status пустые.
Теперь, если бы я нажал эту кнопку (или таймер), скажем btnUpdate
перед настройками в другой моей форме, это выглядело бы так
Вот и проблема ...
Теперь я хочу обновить только информацию в столбце Очередь (tbcount1.text) и Статус (tbstatus.text) с помощью btnUpdate
Например у меня есть этот счетчик
If Form2.cbc1.Checked = True Then
Try
Dim fileTotal As Integer
For Each item As String In lbChannel1.Items
fileTotal += My.Computer.FileSystem.GetFiles(item.ToString).Count
Next
tbCount1.Text = String.Format("{0}", fileTotal.ToString)
Catch ex As Exception
lbErrors.Items.Add(String.Concat("Error: ", ex.Message)) 'Error output
End Try
Dim tCount As Integer = 0
'Til status
If Val(tbCount1.Text) > 20 Then
tbStatus1.Text = ("Many files")
Else
tbStatus1.Text = ("Good")
End If
End If
Что отлично работает. Он дает мне число и слово, которое я хочу в двух текстовых полях, но на данный момент мне нужно обновить весь список, чтобы получить этот счетчик в столбцах.
Я пробовал ...
Чтобы добавить это под btnUpdate
...
Dim str(4) As String
Dim itm As ListViewItem
str(0) = ""
str(1) = ""
str(2) = (tbCount1.Text)
str(3) = ""
str(4) = (tbStatus1.Text)
itm = New ListViewItem(str)
ListView1.Items.Add(itm)
К сожалению, это переходит во вторую строку. См. Изображение ниже.
Другими словами, вот чего я хочу: когда нажата btnupdate
или таймер установлен на 100; обновить указанную строку - столбец 3 с помощью tbcount.text
и обновить указанную строку - столбец 5 с помощью tbstatus.text
. На этом мой вопрос завершен.
Я нашел информацию об этом на C #, но мне это нужно в VB.net. Я мог быть близко или далеко. Надеюсь, в любом случае это было понятно.
1 ответ
Вы можете легко манипулировать элементами списка, когда захотите.
Если у вас выбран элемент, который вы хотите изменить, вы просто получаете к нему доступ следующим образом:
myListview.selecteditems(0).text = ""
myListview.selecteditems(0).subitems(1).text
myListview.selecteditems(0).subitems(2).text
myListview.selecteditems(0).subitems(3).text
Вам не нужно повторно назначать весь listviewitem каждый раз, когда вы его меняете, просто измените все, что нужно изменить ...
Если у вас не выбран элемент в списке (строке), вам придется пройти через коллекцию listviewitems, пока вы не найдете элемент (строку), который вы ищете, а затем манипулировать любыми его частями, которые вам нужны.
For each item in mylistview.items
if item.text = "whatoever"
'this is my item....
'manipulate it....
item.text = "sdfdsf"
item.subitems(1).text = "ddsfdsfdsa"
'etc
end if
next
Примечание. Подпункты основаны на (1), а не на 0 ...
Похожие вопросы
Новые вопросы
vb.net
Visual Basic.NET (VB.NET) - это мультипарадигмальный, управляемый, типобезопасный, объектно-ориентированный язык компьютерного программирования. Наряду с C # и F # это один из основных языков, нацеленных на .NET Framework. VB.NET можно рассматривать как эволюцию Microsoft Visual Basic 6 (VB6), но реализованную в Microsoft .NET Framework. НЕ ИСПОЛЬЗУЙТЕ этот тег для вопросов VB6, VBA или VBScript.