Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
1

Как разместить в окне таблицу строковых значений?

27.01.2017, 11:38. Показов 1059. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте.
Есть проинициализированный различными значениями двухмерный массив строк 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)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2017, 11:38
Ответы с готовыми решениями:

Разместить в окне таблицу с параметрами, заданными при исполнении программы
Доброго времени суток! У меня стоит задача размещать в окне таблицу, с параметрами, заданными...

Как разместить plot в окне программы
Как сделать так, чтобы график, нарисованный с помощью функции plot, занимал не всю фигуру, а...

Как разместить изображение в консольном окне?
Как разместить изображение в консольном окне? Использую visual 2013 c++ Заранее спасибо

Как разместить элементы управления в главном окне?
Здравствуйте! Изучаю сейчас я Win32 API и вот у меня назрел такой вопрос. В моей книге по Win32 API...

7
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
27.01.2017, 12:19 2
Цитата Сообщение от jkrnd Посмотреть сообщение
(Использование именно Label для отображения значений обуславливается наличием в них таких свойств как выравнивание, смена цвета чернил без смены текста (выделение цветом) ,наличие обработчика события MouseClick)
А вы не рассматривали вариант использования для этих целей DataGridView? Все перечисленные свойства имеются
у ячеек этого контрола
1
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
27.01.2017, 13:30  [ТС] 3
MrCrown, спасибо за идею. Обязательно попробую.
0
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
27.01.2017, 13:50  [ТС] 4
MrCrown, а в DGV можно реализовать утолщённые вертикальные разделительные линии (как на картинке):
Миниатюры
Как разместить в окне таблицу строковых значений?  
0
6219 / 2467 / 725
Регистрация: 11.04.2015
Сообщений: 3,986
Записей в блоге: 43
27.01.2017, 14:43 5
jkrnd, можно создать собственный контрол с нужным функционалом, в котором все придется прорисовывать самостоятельно, но это задача достаточно сложная. Так что лучше либо найти готовый контрол для работы с таблицами, либо использовать WebBrowser.
1
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
28.01.2017, 09:41  [ТС] 6
MrCrown, использовал вместо массива Label контрол DataGridWiev, всё равно изображение при загрузке формы мигает и отчётливо заметна "анимация". Примеры во вложениях. Что я не так делаю, подскажите пожалуйста?
Вложения
Тип файла: rar вариант с Label.rar (22.8 Кб, 2 просмотров)
Тип файла: rar вариант c DGW.rar (23.4 Кб, 2 просмотров)
0
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
28.01.2017, 13:09 7
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

jkrnd, Для проекта с DGV помогла двойная буферизация.
Сделал так (код процедуры подсмотрел где-то здесь на форуме)
VB.NET
1
2
3
4
5
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
В FormLoad вызываем:
VB.NET
1
SetDoubleBuffered(dgw1, True)
С вариантом с Label не пробовал, но думаю, тоже должно помочь
1
178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
28.01.2017, 13:59  [ТС] 8
MrCrown, Это победа! Спасибо.

Не по теме:

Вы в очередной раз спасли меня от разочарования в возможностях VS.NET :)



Добавлено через 40 секунд
ещё на работе на слабом компе попробую - отпишусь

Добавлено через 10 минут
MrCrown, для варианта с Label попробовать не смог :
VB.NET
1
2
3
4
5
6
        Dim i, j As Integer
        For i = 0 To 24
            For j = 0 To 27
                SetDoubleBuffered(lbl(i, j), True)
            Next
        Next
Вызывает исключение NullReference в первой команде SetDoubleBuffered
0
28.01.2017, 13:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2017, 13:59
Помогаю со студенческими работами здесь

Как в одном окне проекта разместить другое окно
Подскажите пожалуйста, как в одном окне проекта разместить другое окно? Дело в том, что есть окно,...

Как разместить много информации с картинками в одном окне?
Добрый вечер, я не особо программист, в общем, есть вкладка, в её окошке, хочу разместить кучу...

Как разместить таблицу по центру?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Таблица...

Как разместить таблицу векторов прерываний в atmega8?
Что сделал не так?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru