Прочитать на английском

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


ListBox.ObjectCollection Класс

Определение

Представляет коллекцию элементов в ListBox.

C#
[System.ComponentModel.ListBindable(false)]
public class ListBox.ObjectCollection : System.Collections.IList
Наследование
ListBox.ObjectCollection
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как нарисован ListBox владелец, задав DrawMode свойству OwnerDrawVariable значение и обрабатывая DrawItem события и MeasureItem . В нем также показано задание BorderStyle свойств и ScrollAlwaysVisible и использование AddRange метода .

Чтобы запустить этот пример, вставьте его в пустую форму, которая импортирует System.Drawing пространство имен и System.Windows.Forms пространство имен. Вызовите InitializeOwnerDrawnListBox из конструктора или Load метода формы.

C#
internal System.Windows.Forms.ListBox ListBox1;

private void InitializeOwnerDrawnListBox()
{
    this.ListBox1 = new System.Windows.Forms.ListBox();

    // Set the location and size.
    ListBox1.Location = new Point(20, 20);
    ListBox1.Size = new Size(240, 240);

    // Populate the ListBox.ObjectCollection property 
    // with several strings, using the AddRange method.
    this.ListBox1.Items.AddRange(new object[]{"System.Windows.Forms", 
        "System.Drawing", "System.Xml", "System.Net", "System.Runtime.Remoting", 
        "System.Web"});

    // Turn off the scrollbar.
    ListBox1.ScrollAlwaysVisible = false;

    // Set the border style to a single, flat border.
    ListBox1.BorderStyle = BorderStyle.FixedSingle;

    // Set the DrawMode property to the OwnerDrawVariable value. 
    // This means the MeasureItem and DrawItem events must be 
    // handled.
    ListBox1.DrawMode = DrawMode.OwnerDrawVariable;
    ListBox1.MeasureItem += 
        new MeasureItemEventHandler(ListBox1_MeasureItem);
    ListBox1.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
    this.Controls.Add(this.ListBox1);
}

// Handle the DrawItem event for an owner-drawn ListBox.
private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{

    // If the item is the selected item, then draw the rectangle
    // filled in blue. The item is selected when a bitwise And  
    // of the State property and the DrawItemState.Selected 
    // property is true.
    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
    {
        e.Graphics.FillRectangle(Brushes.CornflowerBlue, e.Bounds);
    }
    else
    {
        // Otherwise, draw the rectangle filled in beige.
        e.Graphics.FillRectangle(Brushes.Beige, e.Bounds);
    }

    // Draw a rectangle in blue around each item.
    e.Graphics.DrawRectangle(Pens.Blue, e.Bounds);

    // Draw the text in the item.
    e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(),
        this.Font, Brushes.Black, e.Bounds.X, e.Bounds.Y);

    // Draw the focus rectangle around the selected item.
    e.DrawFocusRectangle();
}

// Handle the MeasureItem event for an owner-drawn ListBox.
private void ListBox1_MeasureItem(object sender, 
    MeasureItemEventArgs e)
{

    // Cast the sender object back to ListBox type.
    ListBox theListBox = (ListBox) sender;

    // Get the string contained in each item.
    string itemString = (string) theListBox.Items[e.Index];

    // Split the string at the " . "  character.
    string[] resultStrings = itemString.Split('.');

    // If the string contains more than one period, increase the 
    // height by ten pixels; otherwise, increase the height by 
    // five pixels.
    if (resultStrings.Length>2)
    {
        e.ItemHeight += 10;
    }
    else
    {
        e.ItemHeight += 5;
    }
}

Комментарии

Класс ListBox.ObjectCollection хранит элементы, отображаемые ListBoxв . В классе определены ListBox две другие коллекции, которые позволяют определить, какие элементы выбраны в этой коллекции. Класс ListBox.SelectedObjectCollection предоставляет свойства и методы для определения элементов, выбранных в ListBox.ObjectCollection, в то время как ListBox.SelectedIndexCollection класс позволяет определить, какие индексы в объекте ListBox.ObjectCollection выбраны.

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

Вы также можете управлять элементами объекта ListBox с помощью DataSource свойства . Если вы используете DataSource свойство для добавления элементов ListBoxв , вы можете просматривать элементы в ListBox с помощью Items свойства , но нельзя добавлять или удалять элементы из списка с помощью методов ListBox.ObjectCollection.

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

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

ListBox.ObjectCollection(ListBox)

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

ListBox.ObjectCollection(ListBox, ListBox+ObjectCollection)

Инициализирует новый экземпляр ListBox.ObjectCollection на основе другого экземпляра ListBox.ObjectCollection.

ListBox.ObjectCollection(ListBox, Object[])

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

Свойства

Count

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

IsReadOnly

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

Item[Int32]

Получает или задает элемент, расположенный в коллекции по указанному индексу.

Методы

Add(Object)

Добавляет элемент в список позиций ListBox.

AddRange(ListBox+ObjectCollection)

Добавляет элементы существующего ListBox.ObjectCollection в список позиций ListBox.

AddRange(Object[])

Добавляет массив элементов в список позиций ListBox.

Clear()

Удаляет все элементы из коллекции.

Contains(Object)

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

CopyTo(Object[], Int32)

Копирует коллекцию целиком в заданное место существующего массива объектов.

Equals(Object)

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

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

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

GetHashCode()

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

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

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

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

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

Insert(Int32, Object)

Вставляет элемент в список по указанному индексу.

MemberwiseClone()

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

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

Удаляет указанный объект из коллекции.

RemoveAt(Int32)

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

ToString()

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

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

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

ICollection.CopyTo(Array, Int32)

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

Копирует элементы коллекции в массив начиная с определенного индекса в массиве.

ICollection.IsSynchronized

Описание этого члена см. в разделе IsSynchronized.

ICollection.SyncRoot

Описание этого члена см. в разделе SyncRoot.

IList.Add(Object)

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

Добавляет объект в класс ListBox.

IList.Contains(Object)

Определяет, содержит ли коллекция IList указанное значение.

IList.IndexOf(Object)

Определяет индекс заданного элемента коллекции IList.

IList.Insert(Int32, Object)

Вставляет элемент в список IList по указанному индексу.

IList.IsFixedSize

Описание этого члена см. в разделе IsFixedSize.

IList.Item[Int32]

Возвращает или задает элемент по указанному индексу.

IList.Remove(Object)

Удаляет первое вхождение указанного объекта из коллекции IList.

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

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

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

AsQueryable(IEnumerable)

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

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

Продукт Версии
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

См. также раздел