Отключить горизонтальную полосу прокрутки из 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);

Делая что я достиг следующих вещей

  • Отключена горизонтальная полоса прокрутки
  • Навигация с помощью стрелок вверх-вниз
  • Вертикальная полоса прокрутки не появляется нежелательно.
Другие вопросы по тегам