Как добавить в 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); >>
В данном случае по выбору элемента списка будет отображаться сообщение с выделенным элементом.
Текст из textbox добавить в ListBox
Не могли бы Вы (форумчане) помочь:
как из textbox достать текст которыйы ты набираешь и засунуть в listbox?
(набрал и он там отобразился).
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как добавить слово из textBox в listBox?
Уважаемые форумчане! Такой вопрос! Есть listbox, есть textbox, под текстбоксом есть кнопка add.
Передать текст из TextBox в ListBox
box_messages.Items.Add(client.Name + " >> " + client.Reader.ReadString());.
Текст из listbox в textbox с сохранением строк
Нужно перегнать весь текст из listbox с переводом строк в textbox или в переменную string .

Как текст из listbox перекинуть в textbox
подскажите как текст из listbox перекинуть в textbox для того чтоб его можно было отредактировать?
как добавить текст из 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++ не пойму как.
Как асинхронно добавить текст в listbox?
У меня такой вопрос: как можно асинхронно добавить текст в listbox? Допустим, чтобы числа постоянно добавлялись в список.
Отслеживать
25.1k 4 4 золотых знака 45 45 серебряных знаков 81 81 бронзовый знак
задан 17 янв 2015 в 12:13
193 12 12 бронзовых знаков
@rifat2125, Если вам дан исчерпывающий ответ, отметьте его как верный (нажмите на галку рядом с выбранным ответом).
19 янв 2015 в 7:42
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Скорее всего, вам надо генерировать числа асинхронно (на Task’ах, на callback’ах или просто в другом потоке) и добавлять из в ListBox обычным образом.
Отслеживать
ответ дан 18 янв 2015 в 11:34
206k 28 28 золотых знаков 291 291 серебряный знак 526 526 бронзовых знаков
if (listbox.InvokeRequired) < Invoke(new Action(() =>AddText(text))); > else < AddText(text)>; >; . > void AddText(string text) < listbox.Add(text) //или любое действие с listbox >
Отслеживать
ответ дан 19 фев 2015 в 19:16
Valeriy Shinkevich Valeriy Shinkevich
111 6 6 бронзовых знаков
А зачем делать это асинхронно? При добавлении элемента в ListBox текущий поток не блокируется.
Отслеживать
ответ дан 17 янв 2015 в 15:15
@ZBoT, @VladD, Дело в том, что я хочу сделать запись из буфера обмена в listbox. Запись идет сразу, без всяких нажатий кнопок. А listbox ругается, что-то там с потоком.. вот)
19 янв 2015 в 7:51
@rifat2125: Странно. Покажите лучше код.
19 янв 2015 в 11:11
@VladD, я не знаю, что я до этого делал, но сейчас у меня нет этой ошибки. Зато у меня новая проблемка: как мне записать из буфера обмена содержимое в listbox и каждый раз, когда буфер будет меняться, будет писаться новая запись в listbox