Member 10285969 Ответов: 2

Общий доступ к элементам между списками


привет,
Как я могу поделиться элементом между списками?
Если у меня есть 4 списка, и один из них содержит 20 элементов, и я позже разделю его между 4, чтобы каждый содержал по 5 элементов. Пожалуйста, как мне это сделать?

Что я уже пробовал:

dim j as integer=0
For i as integer=0 to list1.items.count - 1
If j=5 then
Exit sub
End if
List2.items.add(list1.items(i).tostring())
List1.items.removeat(i)
J+=1
Next

Maciej Los

Что не так с вашим кодом?

Member 10285969

он перескакивает раздел кода, что означает, что он вообще не добавляет.
И что '.removeat(i)' действительно ли это лучший способ удалить код из списка 1 после добавления в список 2?
Спасибо за ваш ответ

CHill60

Что плохого в том, что у тебя есть?

2 Ответов

Рейтинг:
5

Maciej Los

Взгляните на приведенный ниже код:

'variables
Dim i As Integer, j As Integer, k As Integer
'destination listbox: ListBox2 to 4
Dim dstBox As ListBox = Nothing
'source listbox
Dim srcBox As ListBox = Me.ListBox1

'loop through listboxes
For i = 2 To 4 
	'set destination listbox
	dstBox = DirectCast(Me.Controls(String.Concat("ListBox", i)) ,ListBox)
	'move items
	For j = 1 To 5 
	 	'copy last item from ListBox1 to ListBoxN
		dstBox.Items.Add(srcBox.Items(srcBox.Items.Count()-1))
		'remove last item from ListBox1
		srcBox.Items.RemoveAt(srcBox.Items.Count()-1)
	Next 'j
Next 'i


Member 10285969

милый. Пожалуйста, я действительно не получаю for i=2 to 4 для циклического перебора списка, и почему бы не начать отсчет с 0 до 4?
Пожалуйста, не обижайтесь на мой вопрос. Я программист-самоучка.

Maciej Los

Потому что вы хотите переместить элементы из ListBox1 в ListBox2, ListBox3 и ListBox4.

Member 10285969

сейчас я использую visual studio 2015 и нижеприведенная строка кода не работает
установленные пунктом списка
dstBox = DirectCast(Me.Controls(String.Concat("ListBox", i)) ,ListBox)

Member 10285969

ладно. Спасибо за ваш ответ. У меня есть еще одна проблема. Как насчет того, чтобы вместо этого создать список с кодом из панели инструментов как:
Дим список2 как новый элемент управления ListBox
Будет ли ваш код по - прежнему работать?

Maciej Los

Да, с небольшими изменениями.

Member 10285969

спасибо. Это меня очень спасает

Maciej Los

Всегда пожалуйста.

Maciej Los

Был ли мой ответ полезен? Если да, то можете ли Вы отметить мое решение как ответ? Используйте зеленую кнопку - формально, чтобы удалить ваш вопрос из списка без ответа.

CHill60

5'd. правильные примеры всегда лучше! :-)

Maciej Los

Спасибо, Кэролайн.
Я не уверен, что это правильное решение, но единственное, которое пришло мне в голову в тот момент ;) Правильным было бы, когда код работает с данными, а не с элементами управления forms. Иногда такое решение, как ваше, гораздо лучше моего ;)

Рейтинг:
1

CHill60

Вам нужно начать "с другого конца" списка, если вы собираетесь удалять элементы.

Если вы думаете о списке из 3 пунктов

Item 1 = "A"
Item 2 = "B"
Item 3 = "C"
Если вы затем удалите пункт 2 все ниже этого перетасовывается так
Item 1 = "A"
Item 2 = "C"
Пункт 3 больше не существует.
Вместо того чтобы иметь j в качестве отдельного счетчика - есть подпрограмма, которая добавляет элементы от n до m в список и удаляет из оригинала - а затем вызывает это в цикле


Member 10285969

не могли бы вы объяснить, что вы подразумеваете под кодом, потому что я программист-самоучка.
Спасибо

Member 10285969

пожалуйста, помогите мне сделать программное обеспечение многозадачным, взяв из списка один за другим и просматривая веб-браузер. Я использовал два form.timer, но они продолжают использовать один и тот же элемент из первого списка, даже после обмена элементами и даже с помощью synclock.

CHill60

Это совершенно новый вопрос, поэтому я предлагаю вам опубликовать новый вопрос с кодом. Теперь я могу сказать вам что таймер это неправильный путь но не видя вашего кода я не могу сказать почему он продолжает использовать один и тот же элемент