Как разместить в окне таблицу строковых значений? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Есть проинициализированный различными значениями двухмерный массив строк s(23,27).
Нужно отобразить его содержимое в графическом окне.
Делаю так:
1) рисую графический файл с сеткой, присваиваю его свойству Image PictureBox - это подложка.
2) создаю массив меток lbl(23,27) с прозрачным фоном, задаю позицию, размеры этих меток ну и ряд других свойств (шрифт, выравнивание, цвет чернил,...).
3) добавляю этот массив меток в коллекцию PictureBox.
4) инициализирую метки соответствующими значениями из строкового массива s(23,27).
Проблема: на офисном компьютере (два ядра по 2,6 GHz, 2 Gb памяти, встроенное видео) картинка появляется с неприятной "анимацией". В течение 1-2 секунд я вижу построчную прорисовку хотя и в ускоренном режиме. На серьёзном компьютере картинка просто быстро, но неприятно мигает.
До этого в программе, написанной на VB-6 создание первого ряда из 27 меток производилось в дизайнере и затем этот ряд меток повторялся уже в runtime (Load) ещё 23 раза. Также использовался PictureBox с картинкой сетки (подложкой). Ничего не моргало и мгновенно отображалось даже на Pentium 100 c 128 Mб ОЗУ!
Как избавиться от неприятного мигания при создании и размещении меток?
(Использование именно Label для отображения значений обуславливается наличием в них таких свойств как выравнивание, смена цвета чернил без смены текста (выделение цветом) ,наличие обработчика события MouseClick)
Решение задачи: «Как разместить в окне таблицу строковых значений?»
textual
Листинг программы
Private Sub SetDoubleBuffered(ByVal obj As Control, ByVal setting As Boolean) Dim dgvType As Type = obj.GetType Dim pi As System.Reflection.PropertyInfo = dgvType.GetProperty("DoubleBuffered", Reflection.BindingFlags.Instance + Reflection.BindingFlags.NonPublic) pi.SetValue(obj, setting, Nothing) End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д