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

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

Программное управление элементами в ListBox
Добавление элементов
Итак, все элементы списка входят в свойство Items , которое представляет собой коллекцию. Для добавления нового элемента в эту коллекцию, а значит и в список, надо использовать метод Add, например: listBox1.Items.Add(«Новый элемент»); . При использовании этого метода каждый добавляемый элемент добавляется в конец списка.
Можно добавить сразу несколько элементов, например, массив. Для этого используется метод AddRange :
string[] countries = < "Бразилия", "Аргентина", "Чили", "Уругвай", "Колумбия" >; listBox1.Items.AddRange(countries);
Вставка элементов
В отличие от простого добавления вставка производится по определенному индексу списка с помощью метода Insert :
listBox1.Items.Insert(1, "Парагвай");
В данном случае вставляем элемент на вторую позицию в списке, так как отсчет позиций начинается с нуля.
Удаление элементов
Для удаления элемента по его тексту используется метод Remove :
listBox1.Items.Remove("Чили");
Чтобы удалить элемент по его индексу в списке, используется метод RemoveAt :
listBox1.Items.RemoveAt(1);
Кроме того, можно очистить сразу весь список, применив метод Clear :
listBox1.Items.Clear();
Доступ к элементам списка
Используя индекс элемента, можно сам элемент в списке. Например, получим первый элемент списка:
string firstElement = listBox1.Items[0];
Свойство Count возвращает количество элементов в списке:
int number = listBox1.Items.Count;
Выделение элементов списка
При выделении элементов списка мы можем ими управлять как через индекс, так и через сам выделенный элемент. Получить выделенные элементы можно с помощью следующих свойств элемента ListBox:
- SelectedIndex : возвращает или устанавливает номер выделенного элемента списка. Если выделенные элементы отсутствуют, тогда свойство имеет значение -1
- SelectedIndices : возвращает или устанавливает коллекцию выделенных элементов в виде набора их индексов
- SelectedItem: возвращает или устанавливает текст выделенного элемента
- SelectedItems : возвращает или устанавливает выделенные элементы в виде коллекции
По умолчанию список поддерживает выделение одного элемента. Чтобы добавить возможность выделения нескольких элементов, надо установить у его свойства 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); >>
В данном случае по выбору элемента списка будет отображаться сообщение с выделенным элементом.
List Box. Text Свойство
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или выполняет поиск текста позиции, выбранной в настоящий момент в элементе управления ListBox, или выполняет поиск этого текста.
public: virtual property System::String ^ Text < System::String ^ get(); void set(System::String ^ value); >;
[System.ComponentModel.Bindable(false)] [System.ComponentModel.Browsable(false)] public override string Text
[] [] member this.Text : string with get, set
Public Overrides Property Text As String
Значение свойства
Текст текущей выделенной позиции в элементе управления.
Комментарии
Если для этого свойства задано строковое значение, ListBox выполняется поиск элемента в объекте ListBox , который соответствует указанному тексту, и выбирается элемент. Это свойство также можно использовать, чтобы определить, какие элементы в данный момент выбраны ListBoxв . SelectionMode Если свойство ListBox объекта имеет значение SelectionMode.MultiExtended , это свойство возвращает текст первого выбранного элемента. SelectionMode Если свойство ListBox объекта не имеет значения SelectionMode.None , это свойство возвращает текст первого выбранного элемента.
как сделать поиск по listBox C#
В listBox много строк, которые ссылаются на разные userControl. Нужно сделать сверху поле, куда вводить текст и если этот текст присутствует в listBox то его находит если же несколько, то находит несколько.
Проблема в том, что я не знаю как это сделать. Поиск лучше всего сделать что бы он удалял все лишние строки а при вводе другого слова или удалении снова появлялись. вообщем я не знаю как сделать да еще и что бы порядок открытия userControl сохранился.
Буду благодарен за помощь.
Еще хотел спросить возможно ли создать сразу определенное количество userControl. А то 200 раз его добавлять из меню не в кайф.
как добавить текст из textbox Form2(дочерняя форма) в listbox главной формы.
1) Имеются 2 формы — Form1 и Form2, на Form1 располагаются Button (button1, будет открывать вторую форму) и Label (label1, здесь будем менять текст). На Form2 — button1, по нажатию на которую будет происходить смена текста в label1.
2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных ссылок (когда Form1.h ссылается на Form2.h, который в свою очередь опять ссылается на Form1.h). Для того, чтобы этого избежать, код первой формы (Form1), который будет иметь доступ ко второй форме (Form2) мы вынесем из h-файла в cpp файл.
Таким образом нужно создать файл Form1.cpp. (source files-> правая кнопка->создать)
3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1:
Код C++
public: void Set(String^ text)
label1->Text = text;
>
4) В файле Form2.h подключаем Form1.h:
Код C++
1
#include «Form1.h»
и создаем конструктор, который будет принимать и сохранять ссылку на первую форму для дальнейшего использования:
Код C++
Form2(Form1^ parent)
InitializeComponent();
parentForm = parent;
>
//.
Код C++
private: Form1^ parentForm;
По клику кнопки, будем вызывать метод Set родительской формы:
Код C++
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) parentForm->Set(«hello from form2»);
>
5) Осталось в первой форме сделать открытие второй формы. Для этого из Form1.h обработчик нажатия кнопки переносим в Form1.cpp, а в h-файле оставляем только его объявление:
Form1.cpp:
Код C++
#include «StdAfx.h»
#include «Form1.h»
#include «Form2.h»
namespace testApp System::Void Form1::button1_Click(System::Object^ sender, System::EventArgs^ e) Form2^ f2 = gcnew Form2(this);
f2->Show();
this->Hide();
>
>
В Form1.h (#include «Form2.h» там не нужен, — не будет работать) вставляем только:
Код C++
1
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e);
На этом все. Можно скомпилировать и проверить проект.
// Lab1.cpp: главный файл проекта.
#include «stdafx.h»
#include «Form1.h»
#include «Form2.h»
namespace testApp System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) Form2^ f2 = gcnew Form2();
f2->Show();
>
>
using namespace Lab1;
[STAThreadAttribute]
int main(array ^args)
// Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Создание главного окна и его запуск
Application::Run(gcnew Form1());
return 0;
>
добавила в Form1.h
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e);
public: void Set(String^ text)
listBox1->Items->Add(text);
>
добавила в Form2.h
public :
Form2 ( Form1 ^ parent )
InitializeComponent ( ) ;
parentForm = parent ;
>
private :
///
/// Требуется переменная конструктора.
Form1 ^ parentForm ;
public : System :: Void button1_Click ( System :: Object ^ sender, System :: EventArgs ^ e ) <
parentForm — > Set ( textBox1 — > Text ) ;
>
запускаю и:
1>—— Построение начато: проект: Lab1, Конфигурация: Debug Win32 ——
1> Form2.cpp
1> Lab1.cpp
1>Lab1.cpp(8): error C2065: Form2: необъявленный идентификатор
1>Lab1.cpp(8): error C2065: f2: необъявленный идентификатор
1>Lab1.cpp(8): error C2061: синтаксическая ошибка: идентификатор «Form2»
1>Lab1.cpp(9): error C2065: f2: необъявленный идентификатор
1>Lab1.cpp(9): error C2227: выражение слева от «->Show» должно указывать на тип класса, структуры или объединения либо на универсальный тип
1> тип: ‘unknown-type’
помогите разобраться, пожалуйста в Builder C++ очень легко это сделать, а вот в Visual C++ не пойму как.