Как из listbox вывести данные в файл
Для изучения работы со списками нам вполне подойдет предыдущий проект решения, все что сделаем - удалим коды в обработчиках событий нажатия кнопок и контролы (Рис.1.).
Рис.1. Проект решения
Параграф 1. Работа со списками в ListBox
1.1. Основные свойства ListBox
Поместим на форму контрол ListBox и рассмотрим его свойства.
Как и ранее, здесь будут рассмотрены только свойства о которых не упоминалось в предыдущих параграфах или которых нет у ранее использованных нами контролов.
Свойство DataSource, DisplayMember и ValueMember определяет имя таблицы или массива, поля и значения которых отображаются в списке при работе с базами данных. Тоесть, заполнить ComboBox можно используя не только Add метод, но и DataSource, DisplayMember, и ValueMember свойства. Подробно речь об этом будет вестись при рассмотрении вопросов, связанных с работой с базами данных. Свойтво DataSource может быть использовано при загрузке ListBox из массивов.
Свойство HorizontalExtent устанавливает ширину в пикселях для Scrollbar при значении свойтва HorizontalScrollbar true. Если ширина ListBox меньшая чем значение этого свойства, горизонтальная полоса прокрутки включена. Если ширина ListBox равна или большая чем это значение, горизонтальная полоса прокрутки скрыта.
Свойство IntegralHeight позволяет задать вертикальный размер списка. Если его значение true,то вертикальный размер кратен числу отображаемых элементов и в окне не будет показыватья частично отображаемые элементы списка.
Свойство ItemHeight позволяет задать вертикальный размер элемента списка.
Свойство MultiColumn позволяет разместить элементы списка в несколько колонок, число которых изменяется в зависимости от числа элементов колонок, но при этом выход элементов за вертикальные границы окна не происходит (как результат - нет и не может быть вертикальной прокрутки).
None - выборка пунктов зкрыта - при попытке выбора программно возбуждается прерывание, по клику мышкой строка не выделяется;
One - одновременно может быть выбран только один пунт как мышкой так и пограммно. Следуюший код покажет выбранной, при значении свойства SelectionMode установленным в One, только строку 3 (2, если считать строки от 0, как они реально нумерованы в ListBox):
MultiSimple - может быть выделено несколько пунктов списка, в предыдущем коде 3.
Отметим, что при выделении в режимах MultiSimple и MultiExtend ноер индекса выделенного пункта не соответствует порядку выделения строк, а только их порядку в списе. Если к предыдущему коду добавить следующие строки, то несмотря на то, что поменяны местами индексы для вывода - вывод строк будет все равно последовательный (меню View\Output).
Свойство Sorted позволяет отсортировать список, наприер код:
выведет список в виде:
Свойство UseTabStop показывает возможность использовать в элементах списка символы табуляции.
1.2. Операции над списками ListBox
И так, на заготовку проекта добавим (если еще это не сделано) контрол ListBox, устанавливаем его размеры и свойства в соответствиии с приведенным выше их описанием. Можно оставить и принятые по умолчанию, так как они не влияют на примеры, которые будут приводиться ниже. Свойство SelectionMode установим в MultiExtend, подберем размеры и приложение готово к экспериментам.
Основное свойство ListBox - свойство Items. Оно является просто коллекцией объектов типа строки, тоесть свойство ListBox.Items имеет тип ListBox.ObjectCollection.
1.2.1. Добавление строк в ListBox
Для задания свойства Items на этапе разработки необходимо кликнуть на многоточии рядом с ним в окне Properties и, тем самым, вызвать String Collection Editor. В нем можно ввести необходимые тексты строк, которые после нажатия кнопки "OK" появятся в окне контрола.
Для добавления строк программно можно воспользовться методом Add (уже использованном нами выше).
Чтобы показать, как можно заносить в контрол данные из массива строк, приведем следующий код:
В ListBox пункты добавляются вниз, чтобы изменить порядок добавления пунктов можно воспользоваться методом ListBox.ObjectCollection Insert():
В этом сучае последовательноть расположения пунктов изменилась на противоположную.
Метод Insert позволяет вставить новый пункт в любое место списка.
Если все пункты списка известны, то достаточно для их отображения выполнить следующий код ипользующий метод свойства Items AddRange:
Еще один способ добавления строк - через создание массива системных объектов:
И последний пример, с использоанием cвойтва DataSource, однако следует помнить, что при ипользовании данного cпособа источник данных только отображается в контроле и, поэтому, удалить из контрола пункт не удастся:
1.2.2. Доступ к строкам в ListBox
Для показа доступа к строкам запишем в код обработчика для кнопки 2 следующий код:
После нажатия кнопки 1, выделения мышкой любой из оценок и нажатия кнопки 2, текст пункта будет отображаться в заглавии формы (Почему именно сюда - в свойтво Text - очень мало кода, чтобы посмотреть при отладке значение переменной, часто это гораздо быстрее чем любой другой способ).
Этот же эффект можно достичь и используя свойство Text:
Это означает, что свойство Text хранит только содержимое текста выбранного пункта. Кроме того при выборе нескольких пунктов (Selection Mode MultiSimple или MultiExtendet) в свойтве Tеxt хранится текст только одного пункта - верхнего.
Для того чтобы получить номер выбранной строки списка, изменим обработчик кода нажатия кнопки 2 на следующий:
При выполнении можем видеть в заголовке формы номера индексов.
Следующий код, демонстрирующий возможность использования свойства Items - Count, выведет в заголовок имена всех пунктов списка:
Следующий код также показывает возможность извлечения текста строки, выбранной кликом мышки, с использовнием обработчиков событий. Создадим обработчик события listBox1_MouseDown (напомним - вкладка Events окна Proporties, двойной клик в поле события) и поместим в него следующий код:
Для определения индекса и действий над пунктом списка можно воспользоваться методом FindString, возвращающим индекс пункта с найденным текстом:
1.2.3. Удаление пунктов из списка
Для удаления пунктов из списка можно воспользоватьсяя одним из следующих способов:
Возможность удаления повторяющихся строк можно продемонстрировать на кодах следующих обработчиков:
1.2.4. Изменяем цвет и шрифт пунктов списка
Для изменения цвет пунктов контрола воспользуемся изменением цвета при их отрисовке. Для этого установим свойство DrawMode ListBox в OwnerDrawFixed. После этого создадим обработчик события DrawItem для ListBox и поместим туда следующий код:
После запуска решения результат видим на Рис.2.
Рис.2. Изменения цвета пунктов списков
Изменения шрифта потребует дополнительных затрат, связанных с тем, что это изменение ведет к изменению размеров ячейки поля окна для пункта списка и, как результат, - Windows каким то образом должен быть оповещен, где какой пункт списка отрисован в окне. Для этого, поимо обработчика обытия DrawItem, необходимо создать обработчик события MeasureItem. Код обработчика события нажатия кнопки 1 практически не меняем, за исключением того, что необходимо сделать так, чтобы событие MeasureItem вызывлось для каждого пункта перерисовки списка (DrawMode д.б. OwnerDrawVariable):
Тогда иходный код для обработчиков DrawItem и MeasureItem может быть cледующим:
Результат релизации данного решения представлен на Рис.3.
Рис.3. Изменения шрифтов пунктов ListBox
1.2.5. Загрузка ListBox из файлов
Специальных методов для работы с файлами в ListBox нет, поэтому можно поступить анлогично тоу, как это делалось при загрузке TextBox.
Проверим в заголовке наличие кода using System.IO; и пишем в обработчике события нажатия кнопки 1 следующий код:
Код не требует пояснений - почти его точную копию мы уже видели при загрузки компонента TextBox.
Для записи в файл можно воспользоваться следующим кодом:
Другие возможности работы с файлами будут показаны при рассмотрении параграфа "Загрузка ComboBox из файлов".
Параграф 2. Работа со списками в ComboBox
2.1. Основные свойства ComboBox
Как и ранее, убираем из проекта коды всех обработчиков событий нажатия кнопок, все функции относящиеся к ListBox и сам контрол ListBox и помещаем на форму контрол ComboBox.
Рассмотрим его свойства (те, с которыми мы еще не встречались ранее):
Свойство DropDownStyle - определяет интерфейс с пользователем (стиль и возожность достута к текстовому полю ComboBox). При значении свойства DropDown это выпадающий список с возможностью изменения текстового поля, при DropDownList - доступ к текстовому полю закрыт. При значении свойства Simple список постоянно открыт (естетвенно отсутствует кнопка раскрытия списка), а редактирование поля Text разрешено.
Программная смена DropDownStyle выглядит несколько иначе, чем простое присваивание значения:
Свойство DropDownWidth - определяет ширину раскрывающейся части поля со списком. DropDownWidth не может быть меньшая чем ширина ComboBox. На Рис.3. (см. ниже) видно, как влияет свойство DropDownWidth на вид выпадающего списка при значении свойства DropDownWidth более размера контрола.
Других cвойств, отличных от войтв контрола ListBox у ComboBox нет, но приутствют все остльные его свойтва. Это означает, что ComboBox по существу тот же ListBox, но имеющий для свойства Text отдельное поле и имеющий возможноть отображать пункты списка как выпадающие. Поэтому, далее, практически повторены уже используемые при рассмотрении контрола ListBox коды, в которых учтены лишь незначительные особенности ComboBox.
2.2. Операции над списками в ComboBox
2.2.1. Добавление строк в ComboBox
Для задания свойства Items на этапе разработки необходимо кликнуть на многоточии рядом с ним в окне Proporties и, тем самым, вызвать String Collection Editor. В нем можно ввести необходимые тексты строк, которые после нажатия кнопки "OK" появятся в окне контрола.
Для добавления строк программно можно воспользовться одним из ледующих методов:
2.2.2. Доступ к строкам в ComboBox
Особенностью ComboBox, отличющей его от ListBox, является то, что выбранный текст визуально можно посмотреть в окошечке Text, в oстальном отличия по дотупу к пунктам списка между контролми нет. Напомним рассмотренные методы:
2.2.3. Удаление пунктов из списка
Для удаления пунктов из списка воспользуемся одним из способов:
Следующий пример демонстрирует возможность множественного удаления повторяющихся строк в списке при использовании метода FindStringExact, который ищет указанную строку с указанного индекса или начала списка и, при нахождении, возвращает ее индекс.
Этот код можно использовать для выборки пунктов из списка в некоторый отобранный список, например в другой ListBox, ComboBox или TextBox.
2.2.4. Изменяем цвет пунктов списка
В обработчике события нажатия кнопки 1 пишем код инициализации списка
Так как DrawMode =OwnerDrawVariable, то мы можем выполнить перерисовку по своему усмотрению содержимого ComboBox, как это уже делалоь выше. Создаем событие для ComboBox comboBox1_DrawItem, в котором и отображаем пункты требуемыми цветами и шрифтами:
И последнее, необходимо сообщить Windows размеры пунктов - для этого создадим для контрола обрботчик события MeasureItem, который при стиле OWNERDRAWVARIABLE вызываетя при отрисовки каждого элемента в списке (иначе только один раз).
Результт выполнения показан на Рис.4.
Рис.4. Изменения цвета и шрифтов пунктов списков
2.2.5. Загрузка ComboBox из файлов
Ряд возможнотей по загрузке спиков из фйлов и их сохранению в файлах были рассмотрены несколько ранее в параграфе "Загрузка ListBox из файлов"(они полностью подходят и для ComboBox), здесь мы только добавим несколько других возможностей.
Как и ранее создадим список (используем все тоже решение и, как и ранее, только меняем коды обработчиков событий):
Запишем созданный список в файл (не забудем включить в заголовок код using System.IO;) непосредственно используя StreamWriter.
В директории . \bin\debug\ будет создан фйл a.txt в который загружены строки созданного списка.
Для того, чтобы в этом убедиться и поазать возможность загрузки пунктов списка из файла, допишем код обработчика нажатия кнопки 2:
После реализации решения спиок будет загружен из файла, причем в окно Text будет выведен последний пункт списка.
Параграф 3. Возможности выделения в ListBox и ComboBox
При всей схожести свойств контролов возможности выделения части текста пункта в них несколько различны. Это различие основано на том, что у ListBox нет свойств SelectionStart и SelectionLength. Рассмотрим пример загрузки контролов и програмной cелекции(естественно добавив в проект решения контрол ListBox):
Результат выполнения этого кода представлен на Рис.5.
Рис.5. Возможности прогрмной селекции в ComboBox и ListBox
Параграф 4. Особенности ипользования контрола CheckedListBox
Свойство ChekOnClick при значении true разрешает выбор пункта списка и пометку его галочкой.
Других отличительных от ListBox свойств, отображеых в оне Proporties у CheckedListBox нет. Все это говорит о том, что принципы работы со списками у них одни и теже, одни и теже и методы. И, естетвенно, у CheckedListBox должны быть, и еть, свойства для хранения информации о помеченных пунктах списка.
Так у CheckedListBox есть метод GetItemCheckState(), позволяющий определить помечен ли пунт списка. Следующий код выведет в cвойство Text окна "Checked" если пункт первый списка помечен галочкой и "Uncecked" в противном случае.
Заметим, что, как и ранее, перед проверкой стояния флжка методом GetItemCheckState() можно определить индекс конкретного пункта, например:
Вся совоупность индексов помеченных пунктов хранится в свойстве CheckedIndices, как коллекция (совокупность чиел, начинающихся с 0) и, проверяя наличие номера индекса в коллекции, можно определить помечен ли тот или иной пункт. Для демонтрации использования этого свойства вновь преобразуем проект решения. Убираем из проекта коды всех обработчиков событий нажатия кнопок, все функции относящиеся к ListBox и ComboBox и сами эти контролы и помещаем на форму контрол CheckedListBox (впрочем, Вы, скорее всего, это уже сделали). В обработчик нажатия кнопки 1 пишем код заполнения спика (как и ожидалось - он не отличется от уже ипользовавшихся ранее):
Следующий код выведет в свойство Text номера всех помеченных пунктов, как показано на Рис.6.
Рис.6. Определение помеченных индексов в СheckedListBox
Свойство CheckedItems также является коллекцией помеченных пунктов, но не их номеров, а названий в виде объектов типа строка. Следующий код выведет в свойство Text формы уже не номера пунутов, а их текст(Рис.7.):
Ранее я рассмотрел методы создания пользовательских форм и основы работы с ними (если вы никогда не работали с пользовательскими формами, рекомендую для начала прочитать указанную заметку). Далее привел целый ряд практически полезных примеров пользовательских диалоговых окон. В настоящей заметке подробнее рассказывается об использовании элемента управления ListBox.[1]
Рис. 1. Установка свойства RowSource на этапе разработки
Элемент управления ListBox довольно гибкий в использовании, но работа с ним может оказаться достаточно сложной. В большинстве случаев методы, описанные здесь, могут применяться и для работы с элементом управления ComboBox.
При работе с элементом управления ListBox следует учитывать, что:
- Опции списка элемента управления ListBox могут извлекаться из диапазона ячеек (определяемого свойством RowSource) или добавляться с помощью VBA (для этого используется метод Addltem).
- Элемент управления ListBox может быть применен для выделения одной или нескольких опций. Соответствующее поведение определяется значением свойства MultiSelect.
- Если элемент управления ListBox не настроен на выделение нескольких опций, то значение элемента управления ListBox может связываться с ячейкой листа с помощью свойства ControlSource.
- Элемент управления ListBox может отображаться без предварительно выбранной опции (для этого необходимо установить свойство Listlndex равным –1). Но как только пользователь выделит одну из опций списка, отменить выделение будет невозможно. Исключение из этого правила— значение свойства MultiSelect равно True.
- Элемент управления ListBox может содержать несколько столбцов (что указывается в свойстве ColumnCount) и даже описательные заголовки (для этого используется свойство ColumnHeads).
- Вертикальный размер элемента управления ListBox, помещенного в пользовательское диалоговое окно, не всегда совпадает с вертикальным размером объекта UserForm на экране.
- Опции списка элемента управления ListBox могут отображаться в виде флажков, если разрешено выделение нескольких элементов, или в виде переключателей, если поддерживается только единичное выделение. Это поведение определяется значением свойства ListStyle.
Добавление опций в элемент управления ListBox
Перед отображением пользовательского диалогового окна, которое содержит элемент управления ListBox, следует заполнить элемент управления ListBox необходимыми опциями. Элемент управления ListBox заполняется на этапе разработки проекта посредством указания диапазона ячеек, которые содержат необходимые данные. Его также можно заполнить на этапе выполнения, воспользовавшись кодом VBA для добавления всех опций списка.
В двух примерах этого раздела предполагается следующее:
- используется диалоговое окно UserForm с именем UserForm1;
- диалоговое окно UserForm1 содержит элемент управления ListBox, который называется ListBox1;
- рабочая книга содержит лист Лист1, в диапазоне А1:А12 которого определены опции, отображаемые в элементе управления ListBox.
Добавление опций в элемент управления ListBox на этапе разработки
Для добавления опций в элемент управления ListBox на этапе разработки необходимо, чтобы они хранились в диапазоне ячеек рабочей книги. Воспользуйтесь свойством RowSource для указания диапазона, который содержит опции элемента управления ListBox. На рис. 1 показано окно Properties для элемента управления ListBox (см. также файл listbox fill.xlsm) Свойство RowSource установлено равным Лист1!А1: А12. Когда диалоговое окно UserForm отображается на экране, элемент управления ListBox содержит двенадцать опций из этого диапазона. Опции добавляются в элемент управления ListBox на этапе разработки, сразу после того, как диапазон определяется в качестве значения свойства RowSource.
Удостоверьтесь, что в значении свойства RowSource присутствует имя листа. В противном случае элемент управления ListBox будет применять указанный диапазон в активном рабочем листе. Иногда следует идентифицировать диапазон максимально точно, указав даже имя рабочей книги. Лучше всего сначала определить имя для диапазона, а затем включить его в состав разработанного кода. Это гарантирует использование требуемого диапазона, даже если были добавлены или удалены строки, не входящие в диапазон.
Добавление опций в элемент управления ListBox на этапе выполнения
Чтобы добавить опции элемента управления ListBox на этапе выполнения, необходимо:
- с помощью кода определить значение свойства RowSource, чтобы указать диапазон, хранящий необходимые данные;
- создать код, использующий метод Addltem для добавления опций в элемент управления ListBox.
Следующая процедура устанавливает значения свойства RowSource элемента управления ListBox перед тем, как отображается диалоговое окно UserForm. В этом случае опции состоят из значений в ячейках диапазона Categories рабочего листа Budget:
UserForml.ListBoxl.RowSource = " Budget!Categories "
UserForml.Show
Если опции элемента управления ListBox не содержатся в диапазоне ячеек листа, то можно создать специальный код VBA для заполнения элемента управления ListBox перед кодом отображения диалогового окна. Следующая процедура заполняет окно списка элемента управления ListBox названиями месяцев года с помощью метода Addltem:
Компонент Delphi ListBox это компонент, служащий для хранения и обработки текстовой информации. Каждая строка Delphi ListBox хранит строку данных в формате String.
Компонент Delphi ListBox на этапе конструирования | Компонент Delphi ListBox на Форме в рабочей программе |
Компонент ListBox - это массив строк. ListBox может загружать данные с диска, и сохранять информацию в файл. Также ListBox может сортировать строки. Доступ к строкам предоставляет свойство Items этого компонента. В соответствии с этим, вот как происходит обращение к строке с номером i:
ListBox1.Items[i-1]; // Минус один, так как нумерация строк в компоненте начинается с нуля.
- Считывание из файла;
- Добавление строки в конец списка;
- Добавление строки перед строкой с номером i;
- Добавление строк на этапе конструирования.
Методы добавления строк в компонент Delphi ListBox
Считывание из файла
Добавление строки в конец списка
Добавление строки перед строкой с номером i
Добавление строк на этапе конструирования
Пользователь может выделить строку, щёлкнув по ней мышкой. Номер выделенной строки возвращает свойство компонента ListBox.ItemIndex. То есть, получить текст выделенной строки можно так:
Не забывайте пользоваться оператором присоединения with. С его использованием это присваивание выглядит так:
with ListBox1 do
begin
S := Items[ItemIndex];
end;
При многократном использовании свойств компонента данная запись очень экономит силы. Кстати, оператор присоединения допускает работу с несколькими компонентами, которые нужно разделить запятой. Например, присваивание строки компонента ListBox ячейке таблицы StringGrid выглядит так:
with ListBox1, StringGrid1 do
begin
Cells[i, j] := Items[ItemIndex];
end;
Для удаления строк из компонента применяется метод Delete. Удаление строки с номером i:
Чтобы при добавлении каждая строка была отсортирована (сортировка идёт только по возрастанию), нужно установить:
Также возможно установить это свойство на этапе конструирования в Инспекторе Объектов.
К сожалению, компонент не обладает возможностью добавлять только уникальные данные. Один и тот же текст запишется несколько раз. Для реализации этой возможности приходится дополнительно применять невизуальный аналог компонента ListBox - объект StringList, обладающий такой возможностью:
procedure TForm1.Button1Click(Sender: TObject);
var SL: TStringList;
S: String;
begin
SL:=TStringList.Create; // Создаём список строк типа TStringList
SL.Sorted:=True; // Устанавливаем свойство - сортировать строки
SL.Duplicates:=dupError; // Устанавливаем свойство - дубликаты вызывают ошибку добавления
try
SL.Add(S); // Пробуем добавить строку в объект StringList
ListBox1.Items.Add(S); // Добавляем строку в компонент ListBox
except
Caption:='Попытка добавить дубликат';
// Попытка добавить дубликат вызовет ошибку в первой строке секции try/except,
// прерывание и переход к секции except/end.
// Добавления в ListBox не будет.
end;
end;
Компонент ListBox автоматически добавит полосу прокрутки, если количество строк не помещается по высоте компонента. Высота каждой строки равна ItemHeight. Если нужно чтобы при добавлении новой строки полоса прокрутки точно не возникла, этот размер нужно добавить к высоте компонента. Но делать это нужно только начиная с определённого количества строк. Поэтому нужно делать проверку:
ListBox1.Items.Add('Новая_строка');
with ListBox1 do
if (Items.Count > (Height/ItemHeight))
then Height := Height + ItemHeight;
Но если высота компонента не нацело делится на высоту строки, то прокрутка всё равно возникнет. Поэтому нужно отнять единичку:
ListBox1.Items.Add('Новая_строка');
with ListBox1 do
if (Items.Count > (Height/ItemHeight)-1)
then Height := Height + ItemHeight;
Однако на долю секунды полоса прокрутки всё-таки появляется. Поэтому сначала сделаем проверку, а затем уже будем добавлять строку. В этом случае уже нужно отнимать не 1, а 2:
Добавить данные можно с помощью диалогового окна или конструктора формы.
Выберите свойство Items и нажмите на кнопку или раскройте треугольник в элементе и нажмите на Edit Items, появится диалоговое окно, где можно добавить данные.
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- public partial class Form1 : Form
- public Form1()
- InitializeComponent();
- >
- private void button1_Click( object sender, EventArgs e)
- textBox1.Text += " " + listBox1.Text + "\r\n" ;
- >
- >
- >
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- public partial class Form1 : Form
- public Form1()
- InitializeComponent();
- >
- private void button1_Click( object sender, EventArgs e)
- textBox1.Text += " " + listBox1.Text + "\r\n" ;
- >
- >
- >
добавление и удаление данных программно
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0042
- public partial class Form1 : Form
- //промежуточное свойство, которому будут передаваться данные из дочерней формы
- public ListBox Between
- set
- listBox1.Items.Add(value);
- >
- get
- return listBox1;
- >
- >
- public Form1()
- InitializeComponent();
- >
- //кнопка Добавить
- private void button1_Click( object sender, EventArgs e)
- //открываем дочернюю форму и передаем ей ссылку
- new Form2().ShowDialog( this );
- >
- //кнопка Удалить
- private void button2_Click( object sender, EventArgs e)
- listBox1.Items.Remove(listBox1.SelectedItem);
- >
- //кнопка Удалить все
- private void button3_Click( object sender, EventArgs e)
- listBox1.Items.Clear();
- >
- //кнопка OK
- private void button4_Click( object sender, EventArgs e)
- textBox1.Text += " " + listBox1.Text + "\r\n" ;
- >
- //кнопка Clear
- private void button5_Click( object sender, EventArgs e)
- textBox1.Clear();
- >
- >
- >
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0042
- public partial class Form1 : Form
- //промежуточное свойство, которому будут передаваться данные из дочерней формы
- public ListBox Between
- set
- listBox1.Items.Add(value);
- >
- get
- return listBox1;
- >
- >
- public Form1()
- InitializeComponent();
- >
- //кнопка Добавить
- private void button1_Click( object sender, EventArgs e)
- //открываем дочернюю форму и передаем ей ссылку
- new Form2().ShowDialog( this );
- >
- //кнопка Удалить
- private void button2_Click( object sender, EventArgs e)
- listBox1.Items.Remove(listBox1.SelectedItem);
- >
- //кнопка Удалить все
- private void button3_Click( object sender, EventArgs e)
- listBox1.Items.Clear();
- >
- //кнопка OK
- private void button4_Click( object sender, EventArgs e)
- textBox1.Text += " " + listBox1.Text + "\r\n" ;
- >
- //кнопка Clear
- private void button5_Click( object sender, EventArgs e)
- textBox1.Clear();
- >
- >
- >
сортировка
Если задать свойству Sorted значение true , данные будут отсортированы, а вот после того, как данные будут отсортированы, задать свойству Sorted значение false , то данные первоначальный несортированный вид, ПОЧЕМУ-ТО не принимают.
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0043
- public partial class Form1 : Form
- public Form1()
- InitializeComponent();
- >
- //флажок
- private void checkBox1_CheckedChanged( object sender, EventArgs e)
- listBox1.Sorted = true ;
- >
- //кнопка ОК
- private void button1_Click( object sender, EventArgs e)
- textBox1.Text += " " + listBox1.SelectedItem + "\r\n" ;
- >
- //кнопка Clear
- private void button2_Click( object sender, EventArgs e)
- textBox1.Clear();
- >
- >
- >
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0043
- public partial class Form1 : Form
- public Form1()
- InitializeComponent();
- >
- //флажок
- private void checkBox1_CheckedChanged( object sender, EventArgs e)
- listBox1.Sorted = true ;
- >
- //кнопка ОК
- private void button1_Click( object sender, EventArgs e)
- textBox1.Text += " " + listBox1.SelectedItem + "\r\n" ;
- >
- //кнопка Clear
- private void button2_Click( object sender, EventArgs e)
- textBox1.Clear();
- >
- >
- >
связывание элемента управления с базой данных
Добавьте источник данных. Кликните на Add Project Data Source. Выберите Database.
Запомните имя соединения, если хотите, можете его изменить.
После того, как Visual Studio успешно создало соединение с базой данных, опять раскройте поле с выпадающим спискомData Source. Раскройте Other Data Sources. Раскройте starDataSet и выберите таблицу Colors.
Раскройте поле с выпадающим списком Display Member и выберите столбец Color. Данные этого столбца будут отображаться в списке. Данные этого столбца можно вывести с помощью свойства SelectedItem.
Если Вам нужно, то раскройте поле с выпадающим списком Value Member и выберите столбец id. Данные этого столбца можно вывести с помощью свойства SelectedValue.
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0044
- public partial class Form1 : Form
- public Form1()
- InitializeComponent();
- >
- private void Form1_Load( object sender, EventArgs e)
- // TODO: This line of code loads data into the 'starDataSet.Colors' table. You can move, or remove it, as needed.
- this .colorsTableAdapter.Fill( this .starDataSet.Colors);
- >
- //кнопка OK
- private void button1_Click( object sender, EventArgs e)
- //ВНИМАНИЕ. при работе с базой данных, использование
- //SelectedItem приводит к выводу не выбранного элемента, а
- //System.Data.DataRowView
- textBox1.Text += " " + listBox1.SelectedItem + "\r\n" ;
- textBox2.Text += " " + listBox1.SelectedValue + "\r\n" ;
- textBox3.Text += " " + listBox1.Text + "\r\n" ;
- >
- //кнопка Clear
- private void button2_Click( object sender, EventArgs e)
- textBox1.Clear();
- textBox2.Clear();
- textBox3.Clear();
- >
- >
- >
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0044
- public partial class Form1 : Form
- public Form1()
- InitializeComponent();
- >
- private void Form1_Load( object sender, EventArgs e)
- // TODO: This line of code loads data into the 'starDataSet.Colors' table. You can move, or remove it, as needed.
- this .colorsTableAdapter.Fill( this .starDataSet.Colors);
- >
- //кнопка OK
- private void button1_Click( object sender, EventArgs e)
- //ВНИМАНИЕ. при работе с базой данных, использование
- //SelectedItem приводит к выводу не выбранного элемента, а
- //System.Data.DataRowView
- textBox1.Text += " " + listBox1.SelectedItem + "\r\n" ;
- textBox2.Text += " " + listBox1.SelectedValue + "\r\n" ;
- textBox3.Text += " " + listBox1.Text + "\r\n" ;
- >
- //кнопка Clear
- private void button2_Click( object sender, EventArgs e)
- textBox1.Clear();
- textBox2.Clear();
- textBox3.Clear();
- >
- >
- >
заполняем элемент данными из разных источников данных
В данном примере, наш элемент будет заполнен данными из: коллекции, текстового документа, XML файла, базы данных.
Читайте также: