Вопрос

Есть ли способ, которым я могу остановить горизонтальную полосу прокрутки, когда -либо появляясь в списке? Я хочу, чтобы вертикальная полоса прокрутки показала, когда это необходимо, но я хочу, чтобы горизонтальная полоса прокрутки никогда не появлялась.

Я бы подумал, что это как -то связано с Wndproc?

Спасибо

Это было полезно?

Решение

Вы могли бы попробовать что -то подобное, я использовал в проекте один раз, и это сработало:

[DllImport ("user32")]
private static extern long ShowScrollBar (long hwnd , long wBar, long bShow);
long SB_HORZ = 0;
long SB_VERT = 1;
long SB_BOTH = 3;

private void HideHorizontalScrollBar ()
{
    ShowScrollBar(listView1.Handle.ToInt64(), SB_HORZ, 0);
}

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

Другие советы

Существует гораздо более простой способ устранить нижнюю полосу прокрутки и иметь вертикальный показ. Он состоит в том, чтобы убедиться, что заголовок и, если нет заголовка, ряды являются шириной listview.Width - 4 И если вертикальная полоса прокрутки показана, то listview.Width - Scrollbar.Width - 4;

Следующий код демонстрирует, как:

lv.Columns[0].Width = Width - 4 - SystemInformation.VerticalScrollBarWidth;

@Bennyyboi ответ небезопасен, так как он не отслаивает стек. Вместо этого вы должны использовать следующий код для Dllimport:

[System.Runtime.InteropServices.DllImport("user32", CallingConvention=System.Runtime.InteropServices.CallingConvention.Winapi)]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]

private static extern bool ShowScrollBar(IntPtr hwnd, int wBar, [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)] bool bShow);

Андреас Reiff освещает это в своем комментарии выше после того, как посмотрел еще раз, так что, я думаю, здесь все это хорошо отформатировано.

Лучшее решение - это принятый ответ, который был дан здесь: Как скрыть вертикальную полосу прокрутки в контроле .NET ListView в режиме деталей

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

Недостаток в том, что вы должны создать свой собственный класс просмотра списка, который происходит от System.Windows.Forms.ListView переопределить WndProc. Анкет Но это путь.

Чтобы отключить горизонтальную полосу прокрутки, не забудьте использовать WS_HSCROLL вместо WS_VSCROLL (который использовался в связанном ответе). Значение для WS_HSCROLL является 0x00100000.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top