none
C# Скрываем колонки в ListView RRS feed

  • Вопрос

  • Для скрытия колонок я просто изменяю ширину колонки до 0. все вроде бы нормально, но остается проблема с появлением курсора при наведении на границу м/у заголовками колонок 

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

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WmSetcursor)
        {
            m.Result = (IntPtr) 0;
            return;
        }
                   
        base.WndProc(ref m);
    }

    9 октября 2013 г. 12:48

Ответы

  • Можно просто удалять колонку: ListView.Columns.RemoveAt(index). А когда надо показать - добавлять колонку методом Insert.

    ---

    Если установить ширину колонки в 0, то можно предотвратить изменение её размера в событии:

    listView.ColumnWidthChanging += (o, e) =>
    {
        if (e.ColumnIndex == index)
        {
            e.NewWidth = 0;
            e.Cancel = true;
        }
    };

    Курсор, правда, при этом останется pipe при наведении на скрытую колонку.

    ---

    Вот тут предложен класс, позволяющий прятатать/показывать определённые колонки.

    • Помечено в качестве ответа Dobrii 10 октября 2013 г. 11:12
    9 октября 2013 г. 17:22

Все ответы

  • Можно просто удалять колонку: ListView.Columns.RemoveAt(index). А когда надо показать - добавлять колонку методом Insert.

    ---

    Если установить ширину колонки в 0, то можно предотвратить изменение её размера в событии:

    listView.ColumnWidthChanging += (o, e) =>
    {
        if (e.ColumnIndex == index)
        {
            e.NewWidth = 0;
            e.Cancel = true;
        }
    };

    Курсор, правда, при этом останется pipe при наведении на скрытую колонку.

    ---

    Вот тут предложен класс, позволяющий прятатать/показывать определённые колонки.

    • Помечено в качестве ответа Dobrii 10 октября 2013 г. 11:12
    9 октября 2013 г. 17:22
  • Наверное нужно переопределить свой DataGridView, а там и override OnMouseEnter()

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

    9 октября 2013 г. 19:03