Faq как получить горизонтальную прокрутку (scrollbar) в listbox


Содержание

Горизонтальная прокрутка для списка

У меня есть html listbox с длинным контентом. Ширина содержимого слишком велика, что горизонтальная полоса прокрутки является необходимой. К сожалению, горизонтальной полосы прокрутки нет в списке. Как получить горизонтальную и вертикальную прокрутку для списка. Я предоставил div в качестве родителя для этого списка html и дал ему переполнение-x: auto для него и дал полную ширину для списка внутри него. Например:

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

Может ли кто-нибудь помочь мне решить эту проблему?

Вы должны делегировать как горизонтальную, так и вертикальную полосы прокрутки к прилагаемому div :

Как я могу добавить горизонтальную полосу прокрутки в ListBox VBA

Я хотел бы добавить горизонтальную полосу прокрутки в ListBox VBA.

Оказывается, что встроенный в ListBox не добавляет горизонтальную полосу прокрутки автоматически. У меня есть количество полей, содержание которых превышает ширину ListBox, и, таким образом, нечитаемый пользователю.

Я нашел эту статью , однако код не удается, из — за обращающегося HWND в ListBox (который, по- видимому , не доступны в VBA). Я предпочел бы не написать родной DLL для достижения этой цели, как я подозреваю , что есть лучший путь.

Любая идея о том, как я могу добавить горизонтальную полосу прокрутки в ListBox VBA?

Я открыт к идее использования альтернативного управления, а не получать его на работу с ListBox специально.

Доступ автоматически добавит горизонтальную полосу прокрутки, если ширина столбца превышает ширину списка. ОДНАКО, если вы используете несколько столбцов, первый столбец не может быть установлен в 0. Вы должны иметь по крайней мере, какое-то значение там, даже если это только 0,1″ Надеюсь, что это помогает.


Пробовали ли вы ColumnWidths недвижимость? У меня есть ListBox с горизонтальной полосой прокрутки. Я просто должен был добавить ColumnWidths собственности.

Например, у меня есть

Если я что — то отсутствует, ListBox VBA автоматически получить горизонтальную полосу прокрутки , если сумма его ColumnWidths имущества превышает его собственную ширину.

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

В Visual Studio 2020, вы можете нажать на поле со списком, а затем перейти к панели свойств, а затем (прокрутите вниз) найти свойство «HorizontailScrollbar». По умолчанию это свойство имеет значение ложь, так что вы должны установить его в действительности.

Вы знаете, что вы установили полосу прокрутки правильно, когда маленький треугольник появляется в верхнем правом углу окна списка.

Надеюсь это поможет.

Илон Маск рекомендует:  Поддержка функций и полифилы

Дескриптор он поле списка может быть получен следующим образом: —

Тусклое ListHwnd As Integer lstboxName.SetFocus ListHwnd = GetFocus ()

Используйте этот ListHwnd в качестве первого параметра функции SendMessage .

Мы должны предоставить декларацию ниже, Поскольку функция GetFocus нет в VBA по умолчанию

Private Declare Function GetFocus Lib «user32» () As Integer


В этой статье, единственная причина, она становится ScaleMode это установить ширину горизонтальной полосы прокрутки. Вы не должны делать это.

где 800 ширина пикселя вы хотите поле со списком, чтобы иметь возможность прокрутку вправо.

Вы все еще нуждаются в HWND. Лучший вариант есть использовать внешний DLL (написанный на VB), который может ENUM через дочерние окна вашего процесса до тех пор, пока не найдет класс окна для ListBox (вам нужно будет найти какой-нибудь способ, чтобы однозначно идентифицировать его родителей, например, окна название / текст или что-то). То же DLL может также сделать вызов SendMessage выше, чтобы установить горизонтальный текст степени (возможно, также он может измерить ширину содержащихся элементов списка).

Практическое руководство: реализуем горизонтальную прокрутку секции на Flexbox

В этой статье мы рассмотрим решение повседневной задачи: как создать горизонтально прокручиваемую секцию сайта? Если вкратце, ответ — Flexbox.

Давайте разберёмся с этим более детально.

Каркас

Взгляните на эту разметку. Это простой блок section с несколькими вложенными div :

Стили

Плохой дизайн никто не любит, поэтому давайте сделаем страничку более опрятной:

Сперва мы явно задаём ширину и высоту корневых элементов равной 100% . Затем мы определяем цвет фона, убираем отступ у body и центрируем вложенный в него элемент.

Для наглядности применим стили к этому элементу :


С первым свойством всё понятно, второе указывает секции всё время занимать 100% ширины родительского элемента, а третье гарантирует, что высота секции всегда будет не менее 200px . Вот, что получилось на данном этапе:

Поместим все блоки card—content в секцию card и снова займёмся стилями. Сперва сделаем card flex-контейнером:

Затем займёмся .card—content :

Третья строка гарантирует, что ширина каждой карточки будет не меньше 200px , всё остальное просто и понятно. Вот результат:

Как вы могли заметить, прокручивается вся страница. Так происходит, потому что в секцию card помещаются не все элементы.

Исправим это так:

И теперь прокручивается только секция:

Прячем полосу прокрутки

Красоты ради можно спрятать полосу прокрутки. Для webkit-браузеров (Chrome и Safari) есть очень простой способ:

Согласитесь, так страничка выглядит лучше.

Способы применения

В качестве примера мы использовали пустые блоки, но применить этот приём можно во многих приложениях. Вот пара примеров:


List Box. Horizontal Scrollbar Свойство

Определение

Возвращает или задает значение, указывающее, отображается ли горизонтальная полоса прокрутки в элементе управления. Gets or sets a value indicating whether a horizontal scroll bar is displayed in the control.

Значение свойства

true означает, что горизонтальная полоса прокрутки отображается; в противном случае false . true to display a horizontal scroll bar in the control; otherwise, false . Значение по умолчанию — false . The default is false .

Примеры

В следующем примере кода показано, как использовать свойства HorizontalScrollbar и HorizontalExtent для отображения горизонтальной полосы прокрутки, показывающей весь текст элемента в элементе управления ListBox. The following code example demonstrates how to use the HorizontalScrollbar and HorizontalExtent properties to display a horizontal scroll bar that shows all item text in the ListBox control. В примере также используется свойство IntegralHeight, чтобы убедиться, что элементы не отображаются частично из-за размера элемента управления ListBox. The example also uses the IntegralHeight property to ensure that items are not partially displayed due to the size of the ListBox control. В этом примере требуется, чтобы элемент управления ListBox с именем listBox1 был добавлен в форму. This example requires that a ListBox control, named listBox1 , has been added to a form.

Илон Маск рекомендует:  Что такое код unpack

Комментарии

Свойство HorizontalScrollbar определяет, должна ли ListBox отображать горизонтальную полосу прокрутки, если ширина элементов внутри ListBox выходит за правый края элемента управления. The HorizontalScrollbar property determines whether the ListBox should display a horizontal scroll bar when the width of items within the ListBox extend beyond the right edge of the control. Если это свойство имеет значение true , полоса прокрутки автоматически отображается на основе ширины элементов в ListBox. When this property is set to true , the scroll bar is automatically displayed based on the width of items in the ListBox. Если ListBox является ListBox, рисуемым владельцем, чтобы правильно отобразить горизонтальную полосу прокрутки, необходимо задать свойство HorizontalExtent. If the ListBox is an owner-drawn ListBox, in order to properly display a horizontal scroll bar, you must set the HorizontalExtent property.

Как получить горизонтальную ListBox для прокрутки по горизонтали в WP7?

Я пытаюсь использовать код, приведенный ниже, чтобы сделать горизонтальный ListBox в WP7 Silverlight. Элементы появляются в горизонтальном направлении, но по-прежнему прокрутки по вертикали.

Я делаю что-то неправильно в WPF? Является ли это WP7 конкретная ошибка ?.


Изменить: Я отсутствовал два свойства, которые появляются, чтобы сделать большую разницу. (Решение пришло из второго звена в принятом ответе Мика N.)

Это код, который работает для меня.

Два решения, предложенные здесь вы можете попробовать.

ОК, почти два года спустя, но код Mahantesh работал отлично для меня только 2 дополнения, инвалидизирующих свойство VerticalScrollBar как в линии ScrollViewer и в ListBox линии, чтобы избежать ListBox еще в состоянии прокрутки по вертикали

Как показать кнопку прокрутки в ListBox

Я добавляю элемент управления пользователя в список. Все работает нормально, но у меня проблема, когда я добавляю 10 пользовательских элементов управления, тогда я ожидаю, что listbox должен показать прокрутку, чтобы я мог выбирать элементы в конце списка, но это никогда не происходит даже после того, как свойство show scroll имеет значение true.

Я открыт для идей

вот фотография, которую вы видите, что нет прокрутки

c# scroll winforms custom-controls

2 ответа

2 Решение Cody Gray [2011-02-01 17:56:00]


Где люди получают представление о том, что ListBox является контроль контейнеров? Для этого не существует ListBox , он не предназначен для хранения дочерних элементов управления, добавленных с помощью метода Controls.Add . Вы должны добавить (и в противном случае управлять) элементы, которые он отображает, используя свой aptly-named Items свойство.

Нет видимых полос прокрутки, потому что вы только что наложили каждый из дочерних элементов управления друг на друга. Сам ListBox не знает о них, поэтому он не знает, что ему нужно прокручивать их.

Вы должны использовать какой-либо элемент управления панели, либо Panel сам контроль, либо еще лучше, который будет управлять макетом для вы автоматически. Изучите FlowLayoutPanel или TableLayoutPanel . Все эти элементы управления имеют свойство AutoScroll , которое вы можете установить на «True», которое будет автоматически показывать полосы прокрутки всякий раз, когда их содержимое превышает видимый клиент область.

ListBox не является контейнером! Для настройки элементов списка вы должны использовать режим рисования ownerdraw. Но в вашем случае это будет неправильно. В качестве варианта я могу предложить вам использовать простую панель и изолированную полосу прокрутки, которая будет перемещать (прокручивать) каждый элемент управления на панели

Илон Маск рекомендует:  Забытые проблемы разработки 64 битных программ

Как добавить горизонтальную полосу прокрутки (scrollbar) в TListBox?

Как добавить горизонтальную полосу прокрутки (scrollbar) в TListBox?

В Delphi компонент TListBox автоматически включает в себя вертикальный scrollbar. Полоска прокрутки появляется в том случае, если все элементы списка не помещаются в видимую область списка. Однако, list box не показывает горизонтального скролбара, когда ширина элементов превышает ширину списка. Конечно же существует способ добавить горизонтальную полосу прокрутки.

Добавьте следующий код в событие Вашей формы OnCreate.

procedure TForm1.FormCreate(Sender: TObject);

i, MaxWidth: integer;

for i := 0 to LB1.Items.Count — 1 do

if MaxWidth then


SendMessage(LB1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+ 2 , 0 );

Приведённый код определяет ширину в пикселях самой длинной строки списка. Затем он использует сообщение LB_SETHORIZONTALEXTENT, чтобы установить ширину горизонтального скролбара в пикселях. Два дополнительных пикселя добавленные к MaxWidth служат для стрелки в правом углу list box-а.

Добавить комментарий

Не использовать не нормативную лексику.

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

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!

Настройка DrawMode в ListBox удаляет горизонтальную полосу прокрутки

Я установил DrawMode в свой элемент управления listbox на OwnerDrawFixed, чтобы я мог покрасить некоторые элементы. Когда элемент слишком длинный, чтобы поместиться в горизонтальное пространство в списке, горизонтальный scoll не появляется.

Как я могу сделать полосу прокрутки?

Создан 05 июн. 11 2011-06-05 02:12:39 Nick

2 ответа

вы должны установить HorizontalExtent свойство ListBox в режиме OwnerDrawFixed


Чтобы определить значение, которое HorizontalExtent должен быть установлен, чтобы использовать следующий метод на строках в списке вашей коробки и получить свойство ширины:

Набор HorizontalExtent до максимального значения Width, что MeasureText возвращает

Создан 05 июн. 11 2011-06-05 12:42:56 DeveloperX

Я добавил редактирование, чтобы объяснить, как установить HorizintalExtent. В основном значение TextRenderer.MeasureText (текст, listBox1.font). Ширина – Nick 11 авг. 11 2011-08-11 13:08:13

Вам нужно будет использовать событие ListBox.MeasureItem . См. Пример на странице msdn.

Создан 05 июн. 11 2011-06-05 02:18:58 Bala R

Спасибо за ответ. – Nick 11 авг. 11 2011-08-11 13:08:30

Как добавить горизонтальную полосу прокрутки (scrollbar) в TListBox?

В Delphi компонент TListBox автоматически включает в себя вертикальный scrollbar. Полоска прокрутки появляется в том случае, если все элементы списка не помещаются в видимую область списка. Однако, list box не показывает горизонтального скролбара, когда ширина элементов превышает ширину списка. Конечно же существует способ добавить горизонтальную полосу прокрутки.

Добавьте следующий код в событие Вашей формы OnCreate.

Приведённый код определяет ширину в пикселях самой длинной строки списка. Затем он использует сообщение LB_SETHORIZONTALEXTENT, чтобы установить ширину горизонтального скролбара в пикселях. Два дополнительных пикселя добавленные к MaxWidth служат для стрелки в правом углу list box-а.

ListBox-горизонтальная прокрутка


Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 2

#1 Тема от Durimar 6 марта 2006г. 16:15:41

  • Durimar
  • Восстановленный участник
  • На форуме с 9 марта 2005г.
  • Сообщений: 29
  • Спасибо: 0

Тема: ListBox-горизонтальная прокрутка

Как добавить горизонтальную прокрутку в ListBox?
Нарыл кое-что здесь http://www.vbnet.ru/faq/showtopic.asp? >

#2 Ответ от Сидор Лютый 7 марта 2006г. 05:56:35

  • Сидор Лютый
  • Активный участник
  • На форуме с 7 ноября 2005г.
  • Сообщений: 504
  • Спасибо: 0

Re: ListBox-горизонтальная прокрутка

На сколько я понимаю горизонтальная прокрутка в ListBox ориентируется на свойство ColumnWidths объекта ListBox. Установи нужную ширину столбца(столбцов), и если она будет шире листбокса, то скроллбар появится.. Возможно, задача лишь в том, чтобы определить сколько точек нужно для определенной строки.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL