Как скрыть ListView ColumnHeader? - PullRequest
15 голосов
/ 24 января 2012

Я изо всех сил пытаюсь найти правильный элемент управления для использования для списка предопределенных заданий во включенной форме.В настоящее время у меня есть ListBoxControl в группе «Предопределенное имя задания», в котором перечислены все предопределенные задания для морского сервисного центра (т. Е. Замена масла, настройка и т. Д.).Затем, основываясь на элементе (то есть имени задания), который выбран в моем ListBox, мне нужно отобразить элементы, соответствующие этому заданию.Например, если замена масла является выбранной работой, мне нужно показать 4 литра масла, 1 масляный фильтр, рабочую силу и т. Д. И т. Д.

В настоящее время при загрузке данных формы у меня есть DAOкоторый получает все мои задания из базы данных, используя LINQ to SQL.Затем я перебираю результаты и помещаю имена заданий в ListBox.Проблема, с которой я столкнулся, заключается в том, что для элементов ListBox нет тега, как для элементов ListView.Поэтому каждый раз, когда пользователь выбирает другой элемент в ListBox, я должен выполнить еще один запрос LINQ, чтобы снова получить задание из базы данных, чтобы я мог отобразить соответствующие ему элементы.Если бы я мог использовать ListView и скрыть заголовок столбца, я мог бы установить всю работу для тега, чтобы каждый раз, когда пользователь выбирал новый элемент, у меня был доступ к деталям без необходимости повторного вызова базы данных.Есть ли способ, которым я могу скрыть заголовок столбца ListView, не скрывая весь столбец?

Windows Form

Ответы [ 5 ]

53 голосов
/ 24 января 2012

Вы можете установить HeaderStyle член ListView на None.

listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;

7 голосов
/ 24 января 2012

Извлечение свойства ListView HeaderStyle .Имеются следующие параметры:

  1. Нет
  2. Невыбираемый
  3. Кликабельный

От MSDN:

Свойство HeaderStyle позволяет указать, будут ли заголовки столбцов видимыми или, если они видны, будут ли они работать в качестве нажимаемых кнопок.Если для свойства HeaderStyle установлено значение ColumnHeaderStyle.None, заголовки столбцов не отображаются, хотя элементы и подпункты элемента управления ListView по-прежнему располагаются в столбцах

1 голос
/ 21 мая 2013

Простой способ - использовать событие ColumnWidthChanging

private void listViewExtended1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                e.Cancel = true;
                e.NewWidth = listViewExtended1.Columns[e.ColumnIndex].Width;
            }
        }
1 голос
/ 01 февраля 2012

Вы также можете создать простой объект, такой как ListItem, который имеет две функции: Text (строка) и Tag (объект).Затем реализуйте ListItem.ToString (), и вы также можете использовать их в ListBox.

Вы также можете проверить Better ListView Express , который является бесплатным и позволяет отображать элементы в Подробности просмотр без столбцов.Преимущество над ListBox и ListView заключается в родном виде и множестве дополнительных функций.

0 голосов
/ 25 апреля 2013

Я обнаружил, что если вы точно знаете, что заголовки не отображаются, лучше установить для свойства HeaderStyle значение None, как упоминал Раджеш выше.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...