Как добавить в listbox c текст
Перейти к содержимому

Как добавить в listbox c текст

  • автор:

Как добавить в listbox c текст

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

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

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

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

Элемент ListBox в Windows Forms

Программное управление элементами в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *