#vb.net
#vb.net
Вопрос:
не знал, как точно задать вопрос заголовка. у меня есть поле listview1 с 2 столбцами. в первом столбце указаны имена игроков, а во втором — оценки игроков. в окне listview2 указаны имена игроков и результаты другой игры. мне нужно добавить оценку из listview1 в listview2, чтобы получить общую оценку обеих игр и не добавлять имена игроков дважды, а просто сложить общие оценки вместе и получить общую сумму в listview2. я пытался добавить подпункты scores, но безуспешно. я также пробовал clone
ListView2.Items.Add(ListView1.Items(0).Clone())
но не получилось добавить то, что мне нужно.
у кого-нибудь есть идеи, как лучше всего это сделать? заранее благодарю.
Комментарии:
1. Я предлагаю использовать промежуточную «модель» на основе POCO (или «модель представления») для представления информации, которую вы собираетесь отобразить, а затем использовать функции привязки данных WinForm для ее отображения, вместо того, чтобы манипулировать
ListBox.Items
напрямую.2. Вам не нужна удача, чтобы добавить несколько чисел. Вам нужно объявить переменную и инициализировать ее равным нулю, затем перебрать элементы, которые вы хотите добавить, и добавить каждое значение к текущему итогу. В конце ваша переменная содержит общее количество. Это работает точно так же, как если бы вы, например, добавляли числа на физических страницах с помощью калькулятора. Просто имейте в виду, что a
ListView
содержитStrings
, поэтому вам нужно преобразовать их в числа, чтобы добавить их как числа.3. Да, вы действительно не должны думать в терминах пользовательского интерфейса. Поля списка, кнопки и т.д. используйте какую-нибудь наблюдаемую коллекцию, mvvm и linq
Ответ №1:
Используйте кнопку для переноса данных из Listbox 1 в Listbox 2
Если вы хотите перенести ВСЕ элементы из Listbox 1 в Listbox 2, вам следует использовать «ДЛЯ СЛЕДУЮЩЕГО ЦИКЛА»
Пример:
Listbox2.Items.Clear() Clear first the data in ListBox 2
then add this loop assuming you want to select all data
For i = 0 To Listbox1.Items.Count - 1
Listbox2.Items.Add(Listbox1.Items(i).ToString)
Next