Поделиться через


ListView.ColumnHeaderCollection Класс

Определение

Представляет коллекцию заголовков столбцов в элементе управления ListView.

public: ref class ListView::ColumnHeaderCollection : System::Collections::IList
public class ListView.ColumnHeaderCollection : System.Collections.IList
[System.ComponentModel.ListBindable(false)]
public class ListView.ColumnHeaderCollection : System.Collections.IList
type ListView.ColumnHeaderCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
[<System.ComponentModel.ListBindable(false)>]
type ListView.ColumnHeaderCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
Public Class ListView.ColumnHeaderCollection
Implements IList
Наследование
ListView.ColumnHeaderCollection
Атрибуты
Реализации

Примеры

В следующем примере кода создается форма, содержащая ListView элемент управления , который вручную сортирует элементы при щелчке столбца в элементе ListView управления . В примере определяется класс с именем ListViewItemComparer , реализующий System.Collections.IComparer интерфейс, выполняющий ListViewItem сравнение. В примере создается экземпляр ListViewItemComparer и он используется для задания ListViewItemSorter свойства ListView элемента управления . Вызов Sort метода в обработчике ColumnClick событий использует методы, определенные в ListViewItemComparer , для выполнения сортировки элементов на основе столбца, который был нажат.

#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Collections;

// Implements the manual sorting of items by columns.
ref class ListViewItemComparer: public IComparer
{
private:
   int col;

public:
   ListViewItemComparer()
   {
      col = 0;
   }

   ListViewItemComparer( int column )
   {
      col = column;
   }

   virtual int Compare( Object^ x, Object^ y )
   {
      return String::Compare( (dynamic_cast<ListViewItem^>(x))->SubItems[ col ]->Text,
                              (dynamic_cast<ListViewItem^>(y))->SubItems[ col ]->Text );
   }
};

public ref class ListViewSortForm: public Form
{
private:
   ListView^ listView1;

public:
   ListViewSortForm()
   {
      // Create ListView items to add to the control.
      array<String^>^temp0 = {"Banana","a","b","c"};
      ListViewItem^ listViewItem1 = gcnew ListViewItem( temp0,-1,Color::Empty,Color::Yellow,nullptr );
      array<String^>^temp1 = {"Cherry","v","g","t"};
      ListViewItem^ listViewItem2 = gcnew ListViewItem( temp1,-1,Color::Empty,Color::Red,
                 gcnew System::Drawing::Font( "Microsoft Sans Serif",8.25F,FontStyle::Regular,GraphicsUnit::Point,0 ) );
      array<String^>^temp2 = {"Apple","h","j","n"};
      ListViewItem^ listViewItem3 = gcnew ListViewItem( temp2,-1,Color::Empty,Color::Lime,nullptr );
      array<String^>^temp3 = {"Pear","y","u","i"};
      ListViewItem^ listViewItem4 = gcnew ListViewItem( temp3,-1,Color::Empty,Color::FromArgb( 192, 128, 156 ),nullptr );

      //Initialize the ListView control and add columns to it.
      this->listView1 = gcnew ListView;

      // Set the initial sorting type for the ListView.
      this->listView1->Sorting = SortOrder::None;

      // Disable automatic sorting to enable manual sorting.
      this->listView1->View = View::Details;

      // Add columns and set their text.
      this->listView1->Columns->Add( gcnew ColumnHeader );
      this->listView1->Columns[ 0 ]->Text = "Column 1";
      this->listView1->Columns[ 0 ]->Width = 100;
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 1 ]->Text = "Column 2";
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 2 ]->Text = "Column 3";
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 3 ]->Text = "Column 4";

      // Suspend control logic until form is done configuring form.
      this->SuspendLayout();

      // Add Items to the ListView control.
      array<ListViewItem^>^temp4 = {listViewItem1,listViewItem2,listViewItem3,listViewItem4};
      this->listView1->Items->AddRange( temp4 );

      // Set the location and size of the ListView control.
      this->listView1->Location = Point(10,10);
      this->listView1->Name = "listView1";
      this->listView1->Size = System::Drawing::Size( 300, 100 );
      this->listView1->TabIndex = 0;

      // Enable editing of the items in the ListView.
      this->listView1->LabelEdit = true;

      // Connect the ListView::ColumnClick event to the ColumnClick event handler.
      this->listView1->ColumnClick += gcnew ColumnClickEventHandler( this, &ListViewSortForm::ColumnClick );

      // Initialize the form.
      this->ClientSize = System::Drawing::Size( 400, 400 );
      array<Control^>^temp5 = {this->listView1};
      this->Controls->AddRange( temp5 );
      this->Name = "ListViewSortForm";
      this->Text = "Sorted ListView Control";

      // Resume lay[Out] of* the form.
      this->ResumeLayout( false );
   }

private:

   // ColumnClick event handler.
   void ColumnClick( Object^ /*o*/, ColumnClickEventArgs^ e )
   {
      // Set the ListViewItemSorter property to a new ListViewItemComparer 
      // object. Setting this property immediately sorts the 
      // ListView using the ListViewItemComparer object.
      this->listView1->ListViewItemSorter = gcnew ListViewItemComparer( e->Column );
   }
};

[System::STAThreadAttribute]
int main()
{
   Application::Run( gcnew ListViewSortForm );
}
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;

namespace ListViewSortFormNamespace
{

    public class ListViewSortForm : Form
    {
        private ListView listView1;
       
        public ListViewSortForm()
        {
            // Create ListView items to add to the control.
            ListViewItem listViewItem1 = new ListViewItem(new string[] {"Banana","a","b","c"}, -1, Color.Empty, Color.Yellow, null);
            ListViewItem listViewItem2 = new ListViewItem(new string[] {"Cherry","v","g","t"}, -1, Color.Empty, Color.Red, new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((System.Byte)(0))));
            ListViewItem listViewItem3 = new ListViewItem(new string[] {"Apple","h","j","n"}, -1, Color.Empty, Color.Lime, null);
            ListViewItem listViewItem4 = new ListViewItem(new string[] {"Pear","y","u","i"}, -1, Color.Empty, Color.FromArgb(((System.Byte)(192)), ((System.Byte)(128)), ((System.Byte)(156))), null);
     
            //Initialize the ListView control and add columns to it.
            this.listView1 = new ListView();

            // Set the initial sorting type for the ListView.
            this.listView1.Sorting = SortOrder.None;
            // Disable automatic sorting to enable manual sorting.
            this.listView1.View = View.Details;
            // Add columns and set their text.
            this.listView1.Columns.Add(new ColumnHeader());
            this.listView1.Columns[0].Text = "Column 1";
            this.listView1.Columns[0].Width = 100;
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[1].Text = "Column 2";
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[2].Text = "Column 3";
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[3].Text = "Column 4";
            // Suspend control logic until form is done configuring form.
            this.SuspendLayout();
            // Add Items to the ListView control.
            this.listView1.Items.AddRange(new ListViewItem[] {listViewItem1,
                listViewItem2,
                listViewItem3,
                listViewItem4});
            // Set the location and size of the ListView control.
            this.listView1.Location = new Point(10, 10);
            this.listView1.Name = "listView1";
            this.listView1.Size = new Size(300, 100);
            this.listView1.TabIndex = 0;
            // Enable editing of the items in the ListView.
            this.listView1.LabelEdit = true;
            // Connect the ListView.ColumnClick event to the ColumnClick event handler.
            this.listView1.ColumnClick += new ColumnClickEventHandler(ColumnClick);
            
            // Initialize the form.
            this.ClientSize = new Size(400, 400);
            this.Controls.AddRange(new Control[] {this.listView1});
            this.Name = "ListViewSortForm";
            this.Text = "Sorted ListView Control";
            // Resume layout of the form.
            this.ResumeLayout(false);
        }

        // ColumnClick event handler.
        private void ColumnClick(object o, ColumnClickEventArgs e)
        {
            // Set the ListViewItemSorter property to a new ListViewItemComparer 
            // object. Setting this property immediately sorts the 
            // ListView using the ListViewItemComparer object.
            this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
        }

        [System.STAThreadAttribute()]
        public static void Main()
        {
            Application.Run(new ListViewSortForm());
        }
    }

    // Implements the manual sorting of items by columns.
    class ListViewItemComparer : IComparer
    {
        private int col;
        public ListViewItemComparer()
        {
            col = 0;
        }
        public ListViewItemComparer(int column)
        {
            col = column;
        }
        public int Compare(object x, object y)
        {
            return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
        }
    }
}
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Collections


Namespace ListViewSortFormNamespace

    Public Class ListViewSortForm
        Inherits Form

        Private listView1 As ListView

        Public Sub New()
            ' Create ListView items to add to the control.
            Dim listViewItem1 As New ListViewItem(New String() {"Banana", "a", "b", "c"}, -1, Color.Empty, Color.Yellow, Nothing)
            Dim listViewItem2 As New ListViewItem(New String() {"Cherry", "v", "g", "t"}, -1, Color.Empty, Color.Red, New Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, CType(0, System.Byte)))
            Dim listViewItem3 As New ListViewItem(New String() {"Apple", "h", "j", "n"}, -1, Color.Empty, Color.Lime, Nothing)
            Dim listViewItem4 As New ListViewItem(New String() {"Pear", "y", "u", "i"}, -1, Color.Empty, Color.FromArgb(CType(192, System.Byte), CType(128, System.Byte), CType(156, System.Byte)), Nothing)

            'Initialize the ListView control and add columns to it.
            Me.listView1 = New ListView

            ' Set the initial sorting type for the ListView.
            Me.listView1.Sorting = SortOrder.None
            ' Disable automatic sorting to enable manual sorting.
            Me.listView1.View = View.Details
            ' Add columns and set their text.
            Me.listView1.Columns.Add(New ColumnHeader)
            Me.listView1.Columns(0).Text = "Column 1"
            Me.listView1.Columns(0).Width = 100
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(1).Text = "Column 2"
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(2).Text = "Column 3"
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(3).Text = "Column 4"
            ' Suspend control logic until form is done configuring form.
            Me.SuspendLayout()
            ' Add Items to the ListView control.
            Me.listView1.Items.AddRange(New ListViewItem() {listViewItem1, listViewItem2, listViewItem3, listViewItem4})
            ' Set the location and size of the ListView control.
            Me.listView1.Location = New Point(10, 10)
            Me.listView1.Name = "listView1"
            Me.listView1.Size = New Size(300, 100)
            Me.listView1.TabIndex = 0
            ' Enable editing of the items in the ListView.
            Me.listView1.LabelEdit = True
            ' Connect the ListView.ColumnClick event to the ColumnClick event handler.
            AddHandler Me.listView1.ColumnClick, AddressOf ColumnClick

            ' Initialize the form.
            Me.ClientSize = New Size(400, 400)
            Me.Controls.AddRange(New Control() {Me.listView1})
            Me.Name = "ListViewSortForm"
            Me.Text = "Sorted ListView Control"
            ' Resume layout of the form.
            Me.ResumeLayout(False)
        End Sub


        ' ColumnClick event handler.
        Private Sub ColumnClick(ByVal o As Object, ByVal e As ColumnClickEventArgs)
            ' Set the ListViewItemSorter property to a new ListViewItemComparer 
            ' object. Setting this property immediately sorts the 
            ' ListView using the ListViewItemComparer object.
            Me.listView1.ListViewItemSorter = New ListViewItemComparer(e.Column)
        End Sub

    End Class

    ' Implements the manual sorting of items by columns.
    Class ListViewItemComparer
        Implements IComparer

        Private col As Integer

        Public Sub New()
            col = 0
        End Sub

        Public Sub New(ByVal column As Integer)
            col = column
        End Sub

        Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
           Implements IComparer.Compare
            Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
        End Function
    End Class
End Namespace

Комментарии

Класс ListView.ColumnHeaderCollection хранит заголовки столбцов, которые отображаются в элементе ListView управления, если свойству View присвоено значение Details. Хранит ListView.ColumnHeaderCollection объекты, определяющие текст, отображаемый для столбца, а также способ отображения заголовка столбца в элементе ListView управления при отображении столбцовColumnHeader. ListView При отображении столбцов элементы и их подэлементы отображаются в собственных столбцах. Сведения о том, в каких столбцах отображаются данные подэлемента, см. в ListViewItem.ListViewSubItemCollection разделе класс .

Добавить заголовки столбцов в коллекцию можно несколькими способами. Метод Add добавляет в коллекцию заголовок одного столбца. Чтобы добавить в коллекцию несколько заголовков столбцов, создайте массив ColumnHeader объектов и передайте его в AddRange метод . Если вы хотите вставить заголовок столбца в определенное место в коллекции, можно использовать Insert метод . Чтобы удалить заголовки столбцов, можно использовать Remove метод или метод , RemoveAt если известно, где находится заголовок столбца в коллекции. Метод Clear позволяет удалить все заголовки столбцов из коллекции, а не использовать Remove метод для одновременного удаления одного заголовка столбца.

Помимо методов и свойств для добавления и удаления заголовков столбцов, ListView.ColumnHeaderCollection также предоставляет методы для поиска заголовков столбцов в коллекции. Метод Contains позволяет определить, является ли заголовок столбца членом коллекции. Узнав, что заголовок столбца находится в коллекции, можно использовать IndexOf метод , чтобы определить, где находится заголовок столбца в коллекции.

Примечание

Непредвиденное поведение может привести к тому, что общая ширина всех столбцов превышает 32 768 пикселей.

Конструкторы

ListView.ColumnHeaderCollection(ListView)

Инициализирует новый экземпляр класса ListView.ColumnHeaderCollection.

Свойства

Count

Возвращает количество элементов в коллекции.

IsReadOnly

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

Item[Int32]

Получает заголовок столбца из коллекции по указанному индексу.

Item[String]

Получает заголовок столбца с указанным ключом из коллекции.

Методы

Add(ColumnHeader)

Добавляет существующий ColumnHeader в коллекцию.

Add(String)

Создает и добавляет столбец с указанным текстом в коллекцию.

Add(String, Int32)

Создает и добавляет столбец с указанным текстом и шириной в коллекцию.

Add(String, Int32, HorizontalAlignment)

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

Add(String, String)

Создает и добавляет столбец с указанным текстом и ключом в коллекцию.

Add(String, String, Int32)

Создает и добавляет столбец с указанным текстом, ключом и шириной в коллекцию.

Add(String, String, Int32, HorizontalAlignment, Int32)

Создает и добавляет столбец с указанным ключом, выровненным текстом, шириной и индексом изображения в коллекцию.

Add(String, String, Int32, HorizontalAlignment, String)

Создает и добавляет столбец с указанным ключом, выровненным текстом, шириной и ключом изображения в коллекцию.

AddRange(ColumnHeader[])

Добавляет в коллекцию массив заголовков столбцов.

Clear()

Удаляет все заголовки столбцов из коллекции.

Contains(ColumnHeader)

Определяет, находится ли указанный заголовок столбца в данной коллекции.

ContainsKey(String)

Определяет, содержится ли в коллекции столбец с указанным ключом.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetEnumerator()

Возвращает перечислитель для использования при итерации по коллекции заголовков столбцов.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IndexOf(ColumnHeader)

Возвращает индекс из коллекции для заданного заголовка столбца.

IndexOfKey(String)

Определяет индекс для столбца с указанным ключом.

Insert(Int32, ColumnHeader)

Вставляет существующий заголовок столбца в коллекцию по указанному индексу.

Insert(Int32, String)

Создает новый заголовок столбца с указанным текстом и вставляет заголовок в коллекцию по указанному индексу.

Insert(Int32, String, Int32)

Создает новый заголовок столбца с указанным текстом и исходной шириной и вставляет заголовок в коллекцию по указанному индексу.

Insert(Int32, String, Int32, HorizontalAlignment)

Создает новый заголовок столбца и вставляет его в коллекцию по указанному индексу.

Insert(Int32, String, String)

Создает новый заголовок столбца с указанным текстом и ключом и вставляет заголовок в коллекцию по указанному индексу.

Insert(Int32, String, String, Int32)

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

Insert(Int32, String, String, Int32, HorizontalAlignment, Int32)

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

Insert(Int32, String, String, Int32, HorizontalAlignment, String)

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

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
Remove(ColumnHeader)

Удаляет заданный заголовок столбца из коллекции.

RemoveAt(Int32)

Удаляет заголовок столбца из коллекции по указанному индексу.

RemoveByKey(String)

Удаляет столбец с указанным ключом из коллекции.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

ICollection.CopyTo(Array, Int32)

Копирует объекты ColumnHeader в ListView.ColumnHeaderCollection в массив, начиная с определенного индекса массива.

ICollection.IsSynchronized

Возвращает значение, показывающее, является ли доступ к коллекции ListView.ColumnHeaderCollection синхронизированным (потокобезопасным).

ICollection.SyncRoot

Возвращает объект, который может быть использован для синхронизации доступа к коллекции элементов управления.

IList.Add(Object)

Добавляет объект ColumnHeader в коллекцию ListView.

IList.Contains(Object)

Определяет, находится ли указанный заголовок столбца в данной коллекции.

IList.IndexOf(Object)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает индекс из коллекции для заданного заголовка столбца.

IList.Insert(Int32, Object)

Вставляет существующий заголовок столбца в коллекцию по указанному индексу.

IList.IsFixedSize

Получает значение, указывающее, имеет ли список ListView.ColumnHeaderCollection фиксированный размер.

IList.Item[Int32]

Получает или задает заголовок столбца с заданным индексом в коллекции.

IList.Remove(Object)

Удаляет заданный заголовок столбца из коллекции.

Методы расширения

Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

Применяется к