В Windows Forms, как остановить блокировку потока пользовательского интерфейса, когда пользователь нажимает полосу прокрутки? - PullRequest
2 голосов
/ 25 августа 2009

Никакой другой элемент управления не делает это, кроме полос прокрутки на панелях и т. Д. Щелчок и удерживание кнопки, метки, ссылки, вкладки, любой другой элемент управления не имеет этого эффекта. Но как только пользователь щелкает полосу прокрутки или щелкает и перетаскивает полосу прокрутки, вся остальная обработка в потоке пользовательского интерфейса останавливается. Это большая проблема для моего приложения (игры, которая должна продолжаться в таких условиях), но я не могу найти способ справиться с этим с помощью перегрузок, добавления вызовов Application.DoEvents или чего-либо еще. как это. Есть мысли?

Ответы [ 4 ]

3 голосов
/ 25 августа 2009

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

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

1 голос
/ 25 августа 2009

Как только вы начинаете игру выходить из основного потока и выполнять всю свою бизнес-логику там, но вам нужно будет решить проблему, заключающуюся в том, что все элементы управления winform могут обновляться только потоком событий. 1001 *

Вам нужно будет использовать InvokeRequired на элементах управления, прежде чем их менять.

Это поможет вам начать: http://msdn.microsoft.com/en-us/library/ms171728%28VS.80%29.aspx

1 голос
/ 25 августа 2009

Напишите свои собственные полосы прокрутки / прокручиваемые панели. Полосы прокрутки в любом случае являются самыми уродливыми / громоздкими элементами управления в Windows (кроме всех остальных).

0 голосов
/ 25 августа 2009

Или измените его размер, чтобы полосы прокрутки не были нужны, или переместите дополнительные функции, к которым они обычно переходят, на другие элементы управления (меню, кнопка)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...