Как переименовать ListBox
содержит следующие пунктыКак переименовать все элементы в элементе управления ListBox
C:\Logs\2016-09-28-2.log
C:\Logs\2016-09-28-1.log
в
C:\Logs\2016-09-28-2.log.gz
C:\Logs\2016-09-28-1.log.gz
Как переименовать ListBox
содержит следующие пунктыКак переименовать все элементы в элементе управления ListBox
C:\Logs\2016-09-28-2.log
C:\Logs\2016-09-28-1.log
в
C:\Logs\2016-09-28-2.log.gz
C:\Logs\2016-09-28-1.log.gz
Если предположить, что вы используете WinForms , вы можете изменить свойства элементов в ListBox через Items property. Это возвращает ListBox.ObjectCollection. Вы можете индексировать эту коллекцию и изменять отдельные элементы.
Как правило, элементы в ListBox являются просто строками, поэтому присвоение новой строки соответствующему индексу в коллекции Items приведет к изменению текста в ListBox. Однако они могут быть любым типом объекта. Проверьте код, который добавляет элементы в ListBox, в первую очередь, чтобы убедиться, что они являются строками. Если они что-то еще, вам нужно соответствующим образом изменить эту структуру данных.
Чтобы сделать это для всех элементов в списке, вам нужно будет использовать цикл, проходящий через всю коллекцию предметов.
Например:
For i As Integer = 0 to (myListBox.Items().Count - 1)
myListBoxItems.Items(i) = myListBox.Items(i) + ".gz"
Next
Если это не гарантирует, что все элементы в ListBox должны иметь .gz
расширение добавил к ним, вам нужно будет использовать условный оператор внутри тела цикла, что сначала проверяет текущее значение строки, чтобы решить, следует ли добавлять расширение.
Для минимального решения, попробуйте следующий код
Dim MyList = (From lst In ListBox1.Items.Cast(Of String)() Select lst & ".gz").ToList
ListBox1.DataSource = MyList
Это дало ошибку при выполнении кода, 'Необработанное исключение типа«System.ArgumentOutOfRangeException»произошло в System.Windows.Forms.dll', 'Дополнительная информация: InvalidArgument = Значение« 1 »недопустимо для« index »., Хотя я нашел обходное решение, поэтому проблема решена сейчас, спасибо за попытку в любом случае. – Joey
Цикл должен быть «For i As Integer = 0 to myListBox.Items(). Count - 1' (с: минус один) –
Конечно, это должно быть. Спасибо, @Oliver! В будущем, пожалуйста, не стесняйтесь редактировать, чтобы исправить ошибки кода в моих ответах. Я знаю, что не всем это нравится, но я не вижу в этом ничего плохого. Я часто пропускаю комментарии, потому что получаю сотни уведомлений в день, и у меня просто нет времени, чтобы пройти через все их. Мне довелось увидеть это, поэтому я уже исправил код. –