Listbox имеет дело с 2500 символами. Это то, что медленно. Все эти данные, включая преобразование в/из массивов, являются арахисами в памяти. Следовательно, переход к шагу ToArray не имеет значения. Если ваши пользователи должны прокручивать по горизонтали, чтобы увидеть эту информацию, скорее всего, вы застряли с «медленными».
Если нет, рассмотрите реорганизацию крошечного бита. Стратегия: только положить столько символов - около 100 - как можно просмотреть в регулярном списке ширины. Полные строки сохраняются за кулисами.
- сделать вспомогательный класс, как это (вы можете преобразовать общественную строку в собственность, если вы что анальное ;-):
Class TruncatedListItem
Public Content as string
Overrides sub ToString() as string ' Pardon me if this is wrong I always use intellisense
return Mid(Content,1,100)
end sub
end class
- Добавить эти элементы в ListBox. Когда элемент в списке не имеет строку типа, он вызывает метод ToString элемента (который, кстати, мы просто адаптируем для того, чтобы дать переименованию списка) и добавляет его как строку, то коллекция предметов появляется как элементы, добавил. (Держать начала/конца обновления тоже)
For each each itm as string in Items
dim tli as new TruncatedListItem
tli.Content = itm
listbox.add(tli)
next
- When you want to see what the user picked, instead of getting the string like this:
MyString = Ctype(Listbox.SelectedItem,string)
- сделать это MyString = CTYPE (ListBox.SelectedItem, TruncatedListItem) .content
- Теперь я assumming пользователю, в какой-то момент, по-прежнему потребности в перед выбором выберите все 2500 символов. Если они не являются серьезной палочкой в грязи, они должны решить эту альтернативу (на самом деле есть преимущества для прокрутки).
- Когда они дважды кликают элемент, в обработчике для двойного щелчка, покажите им полный текст в окне сообщений. Вы могли бы сказать им сделать это в подсказке. Например, в обработчике двойного щелчка: MsgBox CTYPE (ListBox.SelectedItem, TruncatedListItem) .content ,, "Полный текст" Item
Удачи!
Спасибо за предложение. К сожалению, это занимает столько же времени, сколько и метод addrange. – Eric
@ Эрик: Хм ... хорошо. Есть ли у вас Visual Studio 2010 и ее профилировщик или у вас есть доступ к другому профилировщику, который мог бы рассказать вам, где больше всего времени тратится на эти линии? –
Использование профайлера, включенного в vs2010, кажется, что все время расходуется на методы 'Add' или' AddRange'. – Eric