Как скрыть ListView ColumnHeader?

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

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

Windows Form

Ответ 1

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

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

Ответ 2

Оформить свойство ListView HeaderStyle. Он имеет следующие параметры:

  • None
  • Nonclickable
  • Clickable

От MSDN:

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

Ответ 3

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

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

Ответ 4

Простым способом является использование события ColumnWidthChanging

private void listViewExtended1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                e.Cancel = true;
                e.NewWidth = listViewExtended1.Columns[e.ColumnIndex].Width;
            }
        }

Ответ 5

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

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