Отключить горизонтальную полосу прокрутки из ListView в Winforms
В моем приложении я использую множество ListView для многих целей. Я хочу отключить горизонтальную полосу прокрутки. Что я сделал эффективно используя следующие ссылки в качестве ссылок Отключить горизонтальную полосу прокрутки 1, Отключить горизонтальную полосу прокрутки 2. Вот мой код:
Прежде всего я установил свойство Scrollable ListView в false
[DllImport("user32.dll")]
static public extern bool ShowScrollBar(System.IntPtr hWnd, int wBar, bool bShow);
private const uint SB_HORZ = 0; //Horrizontal Scroll
private const uint SB_VERT = 1; //Vertical Scroll
private const uint ESB_DISABLE_BOTH = 0x3;
private const uint ESB_ENABLE_BOTH = 0x0;
Создал метод, чтобы использовать его для всех ListView через приложение
public void HideHorizontalScrollBar(ListView lv,int value, bool isNeeded)
{
ShowScrollBar(lv.Handle, value, isNeeded);
}
Теперь ссылаемся на этот метод внутри Contructor MainForm сразу после InitializeComponent()
private void ListViewHorrizontalScrollBar()
{
//0 for horrizontal
//1 for vertical
_ListViewScrollOperation.HideHorizontalScrollBar(this.lvAntSetExcludedFiles, 0, false);
_ListViewScrollOperation.HideHorizontalScrollBar(this.lvAntSetExcludedFiles, 1, true);
}
Теперь эта вещь отлично работает для меня. Однако у меня просто небольшая проблема. Даже если есть только 2 значения, вертикальная полоса прокрутки видна. Даже если в ListView нет никаких данных, вертикальная полоса прокрутки видна.
Кроме того, я не могу перемещаться сверху вниз или снизу вверх, используя клавиши со стрелками вверх и вниз на клавиатуре, поскольку свойство прокрутки в ListView имеет значение false. Так что я могу еще сделать, чтобы решить проблему?
Любая помощь могла бы быть полезна.
Заранее спасибо
1 ответ
После долгих Sinatr и небольшого намека от Sinatr я наконец-то Sinatr решение. И конечно, как говорится в комментарии, я был в проблеме XY. Так вот что я сделал.
- Сначала я изменил свойство Scrollable объекта ListView на true.
- Удален кусок кодов, который я упоминал выше в своем вопросе.
А вот дополнительные строки кода, которые я добавил сразу после ListView
lv.Items.Clear();
foreach (string newval in stringlist)
lv.Items.Add(newval);
lv.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.None);
lv.Columns[0].Width = 'Your own size';
lv.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
Делая что я достиг следующих вещей
- Отключена горизонтальная полоса прокрутки
- Навигация с помощью стрелок вверх-вниз
- Вертикальная полоса прокрутки не появляется нежелательно.