Си шарп лист бокс

List Box. Object Collection Класс

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

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

public: ref class ListBox::ObjectCollection : System::Collections::IList
[System.ComponentModel.ListBindable(false)] public class ListBox.ObjectCollection : System.Collections.IList
[] type ListBox.ObjectCollection = class interface IList interface ICollection interface IEnumerable
Public Class ListBox.ObjectCollection Implements IList

Примеры

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

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

internal: System::Windows::Forms::ListBox^ ListBox1; private: void InitializeOwnerDrawnListBox() < this->ListBox1 = gcnew System::Windows::Forms::ListBox; // Set the location and size. ListBox1->Location = Point(20,20); ListBox1->Size = System::Drawing::Size( 240, 240 ); // Populate the ListBox.ObjectCollection property // with several strings, using the AddRange method. array^temp0 = ; this->ListBox1->Items->AddRange( temp0 ); // 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 += gcnew MeasureItemEventHandler( this, &Form1::ListBox1_MeasureItem ); ListBox1->DrawItem += gcnew DrawItemEventHandler( this, &Form1::ListBox1_DrawItem ); this->Controls->Add( this->ListBox1 ); > // Handle the DrawItem event for an owner-drawn ListBox. 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, (float)e->Bounds.X, (float)e->Bounds.Y ); // Draw the focus rectangle around the selected item. e->DrawFocusRectangle(); > // Handle the MeasureItem event for an owner-drawn ListBox. void ListBox1_MeasureItem( Object^ sender, MeasureItemEventArgs^ e ) < // Cast the sender object back to ListBox type. ListBox^ theListBox = dynamic_cast(sender); // Get the string contained in each item. String^ itemString = dynamic_cast(theListBox->Items[ e->Index ]); // Split the string at the " . " character. array^temp1 = ; array^resultStrings = itemString->Split( temp1 ); // 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; > > 
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[]); // 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; >> 
Friend WithEvents ListBox1 As System.Windows.Forms.ListBox Private Sub InitializeOwnerDrawnListBox() Me.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. Me.ListBox1.Items.AddRange(New Object() _ ) ' 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 Me.Controls.Add(Me.ListBox1) End Sub ' Handle the DrawItem event for an owner-drawn ListBox. Private Sub ListBox1_DrawItem(ByVal sender As Object, _ ByVal e As DrawItemEventArgs) Handles ListBox1.DrawItem ' 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 And DrawItemState.Selected = DrawItemState.Selected) Then e.Graphics.FillRectangle(Brushes.CornflowerBlue, e.Bounds) Else ' Otherwise, draw the rectangle filled in beige. e.Graphics.FillRectangle(Brushes.Beige, e.Bounds) End If ' Draw a rectangle in blue around each item. e.Graphics.DrawRectangle(Pens.Blue, e.Bounds) ' Draw the text in the item. e.Graphics.DrawString(Me.ListBox1.Items(e.Index), Me.Font, _ Brushes.Black, e.Bounds.X, e.Bounds.Y) ' Draw the focus rectangle around the selected item. e.DrawFocusRectangle() End Sub ' Handle the MeasureItem event for an owner-drawn ListBox. Private Sub ListBox1_MeasureItem(ByVal sender As Object, _ ByVal e As MeasureItemEventArgs) Handles ListBox1.MeasureItem ' Cast the sender object back to ListBox type. Dim theListBox As ListBox = CType(sender, ListBox) ' Get the string contained in each item. Dim itemString As String = CType(theListBox.Items(e.Index), String) ' Split the string at the " . " character. Dim resultStrings() As String = 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) Then e.ItemHeight += 10 Else e.ItemHeight += 5 End If End Sub 

Комментарии

Класс 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.ObjectCollection на основе другого экземпляра ListBox.ObjectCollection.

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

Источник

Си шарп лист бокс

Элемент ListBox представляет собой простой список. Ключевым свойством этого элемента является свойство Items , которое как раз и хранит набор всех элементов списка.

Элементы в список могут добавляться как во время разработки, так и программным способом. В Visual Studio в окне Properties (Свойства) для элемента ListBox мы можем найти свойство Items. После двойного щелчка на свойство нам отобразится окно для добавления элементов в список:

Читайте также:  Python exe silent install

Добавление объектов в элемент ListBox

В пустое поле мы вводим по одному элементу списка — по одному на каждой строке. После этого все добавленные нами элементы окажутся в списке, и мы сможем ими управлять:

Элемент ListBox в Windows Forms

Программное управление элементами в ListBox

Добавление элементов

Итак, все элементы списка входят в свойство Items , которое представляет собой коллекцию. Для добавления нового элемента в эту коллекцию, а значит и в список, надо использовать метод Add, например: listBox1.Items.Add(«Новый элемент»); . При использовании этого метода каждый добавляемый элемент добавляется в конец списка.

Можно добавить сразу несколько элементов, например, массив. Для этого используется метод AddRange :

string[] countries = < "Бразилия", "Аргентина", "Чили", "Уругвай", "Колумбия" >; listBox1.Items.AddRange(countries);

Вставка элементов

В отличие от простого добавления вставка производится по определенному индексу списка с помощью метода Insert :

listBox1.Items.Insert(1, "Парагвай");

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

Удаление элементов

Для удаления элемента по его тексту используется метод Remove :

Чтобы удалить элемент по его индексу в списке, используется метод RemoveAt :

Кроме того, можно очистить сразу весь список, применив метод Clear :

Доступ к элементам списка

Используя индекс элемента, можно сам элемент в списке. Например, получим первый элемент списка:

string firstElement = listBox1.Items[0];

Свойство Count возвращает количество элементов в списке:

int number = listBox1.Items.Count;

Выделение элементов списка

При выделении элементов списка мы можем ими управлять как через индекс, так и через сам выделенный элемент. Получить выделенные элементы можно с помощью следующих свойств элемента ListBox:

  • SelectedIndex : возвращает или устанавливает номер выделенного элемента списка. Если выделенные элементы отсутствуют, тогда свойство имеет значение -1
  • SelectedIndices : возвращает или устанавливает коллекцию выделенных элементов в виде набора их индексов
  • SelectedItem: возвращает или устанавливает текст выделенного элемента
  • SelectedItems : возвращает или устанавливает выделенные элементы в виде коллекции
Читайте также:  OpenFile test

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

Чтобы выделить элемент програмно, надо применить метод SetSelected(int index, bool value) , где index — номер выделенного элемента. Если второй параметр — value имеет значение true , то элемент по указанному индексу выделяется, если false , то выделение наоборот скрывается:

listBox1.SetSelected(2, true); // будет выделен третий элемент

Чтобы снять выделение со всех выделенных элементов, используется метод ClearSelected .

Событие SelectedIndexChanged

Из всех событий элемента ListBox надо отметить в первую очередь событие SelectedIndexChanged , которое возникает при изменении выделенного элемента:

public partial class Form1 : Form < public Form1() < InitializeComponent(); string[] countries = < "Бразилия", "Аргентина", "Чили", "Уругвай", "Колумбия" >; listBox1.Items.AddRange(countries); listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged; > void listBox1_SelectedIndexChanged(object sender, EventArgs e) < string selectedCountry = listBox1.SelectedItem.ToString(); MessageBox.Show(selectedCountry); >>

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

Источник

Оцените статью