vb.net требуется слишком много времени для загрузки пользовательского элемента управления, содержащего массив элементов управления Label - PullRequest
1 голос
/ 22 декабря 2011

Я обновляю пользовательский элемент управления с vb6 до vb.net.
В приложении vb6 я загружаю 3000 ярлыков, используя массив управления ярлыками.
В vb.net я делаю то же самоено загрузка занимает слишком много времени.
В vb6 это занимает 1-2 секунды, но в vb.net для такой же работы требуется 30-40 секунд.
В чем проблема?Почему в vb.net слишком много времени занимает та же работа?

Код приведен ниже, здесь Led - массив управления метками.

For l = 1 To 3000
  Led.Load(ledCounter)
  ColLed.Add(Led(ledCounter))
  Led(ledCounter).BackColor = System.Drawing.ColorTranslator.FromOle(LedColor)
  Led(ledCounter).Top = VB6.TwipsToPixelsY(15)
  Led(ledCounter).Left = VB6.TwipsToPixelsX(15)
  Led(ledCounter).Height = VB6.TwipsToPixelsY(LedHeight)
  Led(ledCounter).Width = VB6.TwipsToPixelsX(LedWidth)
  Led(ledCounter).BorderStyle = Windows.Forms.BorderStyle.None
  Led(ledCounter).BackColor = System.Drawing.ColorTranslator.FromOle(LedColor)
  Led(ledCounter).Visible = True
Next

1 Ответ

3 голосов
/ 22 декабря 2011

В VB6 метка представляет собой элемент управления без окон (легкий) .Он не имеет дескриптора окна и, следовательно, не существует для ОС.Код этого элемента управления просто проверяет, где находится мышь, и выполняет некоторый рисунок на родительском элементе управления.

Однако в VB.NET метка является полноценным элементом управления, который имеет дескриптор окна и поэтому «существует».«.Создание нескольких тысяч из них - плохая идея, потому что количество доступных оконных дескрипторов ограничено (и потому что это медленно).

Вам следует пересмотреть свой дизайн и рассмотреть возможность использования какой-либо сетки.

...