Member 12561559 Ответов: 2

Проблемы с максимизированной блокировкой формы/мерцающей полосой прокрутки


Всем привет,
У меня есть приложение, которое можно изменить, нет кода в событии изменения размера, так как я полагаюсь на док-станцию и якоря для заполнения формы.

Его форма, с управления TabControl внутри, и элемент управления DataGrid внутри каждой из вкладок (7 в общей сложности). Если я разверну его на весь экран, затем сверну и оставлю примерно на 5 или 10 минут, а затем нажму на Трей приложений, чтобы вернуть его обратно в развернутое состояние, прокрутка datagrid с правой стороны просто мерцает, как сумасшедший, а верхняя часть экрана, трудно объяснить, наполовину нарисована. его пересекает большая черная полоса.

Если я нажму на некоторые из заполненных строк, полоса прокрутки перестанет мерцать.

Я использую код doublebuffer для datagrids, чтобы сделать их прокрутку более плавной - я мог бы попробовать это, чтобы увидеть, если это проблема (возможно, именно поэтому microsoft оставила это свойство вне datagridview?)

Любая помощь будет очень признательна :) Ура парни и девчонки

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

изменив автомасштабирование на none, чтобы увидеть, будет ли это иметь какое-либо значение, он остановил блокировку - но я получаю ужасное мерцание и черную полосу в верхней части моей формы

2 Ответов

Рейтинг:
2

JU571C3

попробуйте поместить все внутри панели, тогда прокрутка будет в ней, и чтобы активировать ее, вам просто нужно кодировать в подменю, когда форма загружается:

Panel1.AutoScroll = True
       Panel1.VerticalScroll.Visible = False Or Panel1.HorizontalScroll.Visible = False


Рейтинг:
0

User 11061201

Это происходит потому, что в таких случаях Paint Events вас увольняют много раз, и каждый раз, когда ваша форма перекрашивается, все ее дети тоже вынуждены перекрашиваться. Мерцание - это результат этого дорогостоящего обновления. Что вы можете сделать, это, Hide() любые элементы управления до тех пор, пока форма полностью не появится как единое целое. Тогда вы можете Show() опять же его дети, но я не уверен, что эта техника удалит все мерцание, из-за того, что вы используете тяжелую комбинацию с TabControl и несколько DataGridViews.