Статья Как очистить listbox в C#
Небольшая заметка, в которой хочу показать, как очистить listBox. Задача встречается довольно часто и имеет очень простое решение. И так для начала создадим небольшое Windows Forms приложение, после чего поместим на форму: элемент управления listBox и кнопку, при нажатии на которую будет выполняться очистка. Каркас готов и теперь можно добавить несколько любых записей.
Когда Вы добавляете новую запись в listBox, она автоматически попадает в коллекции объектов Items, где хранится на протяжении всего жизненного цикла Вашего приложения. Поэтому, для того чтобы очистить listBox, необходимо просто удалить все элементы, которые содержатся внутри данной коллекции. Например, это можно сделать с помощью метода Clear.
private void button1_Click(object sender, EventArgs e)
- Доступно обновление: Visual Studio 2013 Update 2 RC
- Нахождение максимального элемента массива
- Добавление строки в Excel файл
Как вывести в листбокс 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. Selected Item Свойство
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает выбранный в настоящий момент элемент в поле со списком ListBox.
public: property System::Object ^ SelectedItem < System::Object ^ get(); void set(System::Object ^ value); >;
[System.ComponentModel.Bindable(true)] [System.ComponentModel.Browsable(false)] public object SelectedItem
[System.ComponentModel.Bindable(true)] [System.ComponentModel.Browsable(false)] public object? SelectedItem
[] [] member this.SelectedItem : obj with get, set
Public Property SelectedItem As Object
Значение свойства
Объект, представляющий текущую выбранную позицию в элементе управления.
Примеры
В следующем примере кода показано, как использовать SelectedIndexChanged событие для поиска и выбора элемента в другом ListBox элементе управления. В примере событие используется для SelectedIndexChanged определения того, когда изменяется выбранный ListBox элемент в . Затем пример кода считывает текст элемента с помощью SelectedItem свойства и вызывает FindString метод для другого ListBox объекта, используя текст, возвращенный SelectedItem в первом ListBox. Если элемент найден в другом ListBox, он выбирается. В этом примере требуется, чтобы в форму были добавлены два ListBox элемента управления с именем listBox1 и listBox2 , а оба ListBox элемента управления содержат идентичные элементы. В этом примере также требуется, чтобы метод обработки событий, определенный в примере, был подключен к событию SelectedIndexChanged listBox1 .
private: void listBox1_SelectedIndexChanged( Object^ /*sender*/, System::EventArgs^ /*e*/ ) < // Get the currently selected item in the ListBox. String^ curItem = listBox1->SelectedItem->ToString(); // Find the string in ListBox2. int index = listBox2->FindString( curItem ); // If the item was not found in ListBox 2 display a message box, // otherwise select it in ListBox2. if ( index == -1 ) MessageBox::Show( "Item is not available in ListBox2" ); else listBox2->SetSelected( index, true ); >
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) < // Get the currently selected item in the ListBox. string curItem = listBox1.SelectedItem.ToString(); // Find the string in ListBox2. int index = listBox2.FindString(curItem); // If the item was not found in ListBox 2 display a message box, otherwise select it in ListBox2. if(index == -1) MessageBox.Show("Item is not available in ListBox2"); else listBox2.SetSelected(index,true); >
Private Sub listBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listBox1.SelectedIndexChanged ' Get the currently selected item in the ListBox. Dim curItem As String = listBox1.SelectedItem.ToString() ' Find the string in ListBox2. Dim index As Integer = listBox2.FindString(curItem) ' If the item was not found in ListBox 2 display a message box, otherwise select it in ListBox2. If index = -1 Then MessageBox.Show("Item is not available in ListBox2") Else listBox2.SetSelected(index, True) End If End Sub
Комментарии
Для стандартного ListBoxможно использовать это свойство, чтобы определить, какой элемент выбран в ListBox. SelectionMode Если для свойства ListBox задано значение SelectionMode.MultiSimple или SelectionMode.MultiExtended (что указывает на множественный выборListBox) и в списке выбрано несколько элементов, это свойство может возвращать любой выбранный элемент.
Чтобы получить коллекцию, содержащую все выбранные элементы при множественном выборе ListBoxSelectedItems , используйте свойство . Если вы хотите получить позицию индекса выбранного в данный момент элемента в ListBox, используйте SelectedIndex свойство . Кроме того, можно использовать SelectedIndices свойство , чтобы получить все выбранные индексы в множественном выборе ListBox.
Как вывести результат команды на Listbox?
Здравствуйте!
Вот есть у меня программа, которая выполняет подключение к ПЛК по порту Ethernet, и она может посылать ей команды через textbox, но я хочу, чтобы результат команды, которую я отправил появилась в listbox’е, а как это реализовывать это у меня нет представления. Как мне надо обрабатывать результат работы команды, как с ним взаимодействовать, чтобы вывести?
Работаю с ОВЕН ПЛК200-04.
Заранее спасибо.
- Вопрос задан 09 мая 2023
- 65 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1

Что значит «нет представления»?
Ты можешь принять строку-ответ на посланную команду?
Если да, то раздели её по символу переноса строки (‘\n’) на массив строк, перебери массив циклом и добавь каждый элемент в свой listbox. Вот и всё.
А если не можешь, то тогда надо узнавать, как это сделать.
Ответ написан 09 мая 2023
Андрей Фомин @a63826ndrew Автор вопроса
Vindicar,
А я вот и не знаю как принять строку — ответ, обработать — это дело второе, мне чтобы ее обработать надо ее получить для начала, а вот как получить -вот это для меня вопрос.

Андрей Фомин, ну, знаешь.
1. Тогда сформулируй вопрос иначе. Например, «как принять данные с ПЛК такого-то по Ethernet». Больше шансов получить ответ по делу.
2. телепаты в эмиграции, а я без понятия, как ты с этой ПЛК работаешь. Ethernet — штука многоуровневая. Вот прямо сырые Ethernet-фреймы посылаешь? Или всё же TCP/UDP поверх IP или иного протокола транспортного уровня? Гадать на кофейной гуще не хочется, а код ты не привёл.
Андрей Фомин @a63826ndrew Автор вопроса
Vindicar,
Ну хорошо, поподробнее тогда расскажу:
Работаю я с ней таким образом: подключаюсь к ПЛК через Ethernet порт и через TCP устанавливаю соединение по SSH через IP, порт, логин и пароль. Код, который использую для отправки команды выглядит вот так:
SshCommand command = SSHclient.RunCommand(txtCommand.Text);

Андрей Фомин, Было бы здорово, если бы ты также написал, какую именно библиотеку ты используешь для работы с SSH.
Но поверхностный гуглёж наводит на мысль, что у объекта command есть атрибуты OutputStream и ExtendedOutputStream. Подозреваю, что с ними можно работать как с файлом, например, читать данные через класс StreamReader. Поэкспериментируй в этом направлении.
Андрей Фомин @a63826ndrew Автор вопроса
Vindicar,
Хорошо, попробую то что вы предложили.
Библиотека для работы с SSH, которую я использую — SSH.NET.
Андрей Фомин @a63826ndrew Автор вопроса
Vindicar,
Ну в общем я попробовал двигаться в том направлении, которое вы посоветовали, и получилось вот это:
OVEN_info.Items.Clear(); SshCommand command = SSHclient.RunCommand(txtCommand.Text); ShellStream stream = SSHclient.CreateShellStream("stream",80,40,80,40,1024); StreamReader reader = null; TimerPoll.Start(); try < string result = null; reader = new StreamReader(stream); StreamWriter writer = null; writer.AutoFlush = true; writer.WriteLine(result); reader.ReadToEnd(); >catch (Exception ex)

Андрей Фомин, ты код сам писал, или у чатгпт спрашивал?
StreamWriter writer = null; writer.AutoFlush = true;
Присваиваешь переменной-объекту null (нет объекта) и тут же, следующей же строкой, пытаешься обратиться к свойству этого объекта. Которого нет. Я уж молчу про то, зачем тебе вообще writer если ты хочешь прочитать данные и поместить их в GUI.
Повторю свой совет: отложи проект и поучи основы языка. ИНаче за каждой строчкой так и будешь сюда бегать.