#c #user-interface
#c #пользовательский интерфейс
Вопрос:
Вот в чем проблема:
Способ работы системы GUI, которую я использую, заключается в следующем:
Виджет может прослушивать события мыши. Слушатели могут использовать событие, которое они прослушивают, и в результате виджет, который они прослушивали, не получит событие, даже если оно было предназначено для них, его получит только слушатель.
Проблема возникает здесь:
Внутри области прокрутки есть поле списка. Список можно прокручивать. Область прокрутки также можно прокручивать. Что происходит прямо сейчас, так это когда я двигаю мышью, а виджет под мышью — это поле списка, перемещаются как поле списка, так и область прокрутки. Единственное решение, которое я вижу, заключается в том, что scrollpane использует все события mousewheel, но тогда у ListBox нет возможности когда-либо прокручивать.
Я хочу, чтобы поле списка прокручивалось, когда оно находится в фокусе, но если бы я сделал это, это не сработало бы, потому что, например, если переключатель внутри области прокрутки сфокусирован, я все равно хочу, чтобы область прокрутки прокручивалась, это только для виджетов с полосами прокрутки, таких как textbox и listbox, где это нежелательно.
Спасибо
Кроме того, система gui, которую я использую, является моей собственной, которую я разрабатываю.
Комментарии:
1. Вы разрабатываете систему GUI на Java, .NET, и C ?
2. Нет, язык, на котором находится решение, для меня не проблема, я делаю это на C , но принципы те же.
3. Джеймс ссылается на ваши теги, которые ужасно вводят в заблуждение
Ответ №1:
Обычный способ справиться с этим заключается в том, что ListBox использует событие только в том случае, если оно действительно прокручивается. Если вы наведете курсор мыши на список и используете колесо прокрутки, список будет прокручиваться до тех пор, пока не достигнет предела прокрутки. После этого дальнейшие перемещения колеса приводят к прокрутке области прокрутки.
Очевидно, что на этот счет есть варианты — важно решить, чего вы на самом деле хотите добиться.
Вам также нужен другой способ прокрутки области прокрутки, чтобы, если пользователь явно захочет прокрутить ее, он мог, не прокручивая до конца списка. Полосы прокрутки на области прокрутки были бы одним из способов. Вы также должны убедиться, что существует способ прокрутки списка без использования колесика мыши.