Textbox c и listbox в чем разница
Перейти к содержимому

Textbox c и listbox в чем разница

  • автор:

Русские Блоги

Введение в программирование на C #, применение элементов управления C # (textBox, checkBox, listBox, listView и т. Д.)

Откройте Visual Stdio для программирования

1. Применение элемента управления textBox:

Напишите код для окна входа в систему:

2. Применение элемента управления checkBox (флажок), дополните код этой картинки

Добавьте код в отображаемую кнопку личного хобби:

private void button1_Click(object sender, EventArgs e)
<
// Добавляем код в событие показа личной кнопки хобби
if (textBox1.Text == "")
<
MessageBox.Show (это, «Пожалуйста, введите свое имя», «Сообщение», MessageBoxButtons.OK, MessageBoxIcon.Information);
>
else
<

if (checkBox1.Checked == true && checkBox2.Checked == true)
textBox2.Text = textBox1.Text + «Нравится» + checkBox1.Text + »и« + checkBox2.Text;
else if (checkBox1.Checked == true && checkBox2.Checked == false)
textBox2.Text = textBox1.Text + «Нравится» + checkBox1.Text;
else if (checkBox1.Checked == false && checkBox2.Checked == true)
textBox2.Text = textBox1.Text + «Нравится» + checkBox2.Text;
else if (checkBox1.Checked == false && checkBox2.Checked == false)
textBox2.Text = "";
>
>

3. Приложение элемента управления listView, вытащите элемент управления listView, установите свойства:

Атрибут представления — DeTails

Открытые столбцы для добавления элементов данных в элемент управления listView

Результаты следующие: добавьте обработчики событий для кнопок добавления и удаления соответственно.

Textbox c и listbox в чем разница

Цель: Овладение навыками создания и практического использования наиболее часто используемых элементов управления на форме Windows Forms приложения.

Содержание.

1. Теоретическая часть.

1.1. Элементы управления «Кнопки».

Нажимаемой кнопкой (Button) называется элемент управления, все взаимодействие пользователя с которым ограничивается одним действием — нажатием. Все, что вам необходимо сделать при работе с кнопкой, — это поместить ее в нужном месте формы и назначить ей соответствующий обработчик. Обработчик назначается для события Click.

Флажки (CheckBox) являются кнопками отложенного действия, т. е. их нажатие не должно запускать какое-либо немедленное действие. С их помощью пользователи вводят параметры, которые скажутся после, когда действие будет запущено иными элементами управления. Элемент CheckBox может иметь 3 состояния — помеченное, непомеченное и смешанное. Чаще всего этот элемент применяется для определения значений, которые могут иметь только два состояния.

Радиокнопки (RadioButton) по своим свойствам немного похожи на флажки. Их главное различие заключается в том, что группа флажков позволяет выбрать любую комбинацию параметров, радиокнопки же дают возможность выбрать только один параметр. Из этого различия проистекают и все остальные. Например, в группе не может быть меньше двух радиокнопок. Кроме того, у радиокнопок не может быть смешанного состояния.

Блок группировки (GroupBox) Блок группировки помогает визуально объединить несколько элементов управления в одну группу. Это бывает особенно полезно, когда надо придать вашему приложению более понятный пользовательский интерфейс. Например, объединить группу радиокнопок.

1.2. Элементы управления «Поля ввода» и «Списки».

Поле ввода (TextBox) является основным элементом, предназначенным для ввода пользователем текстовых данных. Использовать TextBox можно в однострочном или многострочном режиме. Однако данный элемент управления имеет ограничение — до 64 кБайт текста. Если вам необходимо обрабатывать большие объемы информации, лучше использовать элемент RichTextBox.

Расширенное поле ввода (RichTextBox) дает возможность пользователю вводить и обрабатывать большие объемы информации (более 64 кБайт). Кроме того, RichTextBox позволяет редактировать цвет текста, шрифт, добавлять изображения. RichTextBox включает все возможности текстового редактора Microsoft Word.

Список (ListBox) представляет собой простейший вариант пролистываемого списка. Он позволяет выбирать один или несколько хранящихся в списке элементов. Кроме того, ListBox имеет возможность отображать данные в нескольких колонках. Это позволяет представлять данные в большем объеме и не утомлять пользователя скролированием.

Помечаемый список (CheckedListBox) является разновидностью простого списка. Его дополнительное достоинство — в наличии флажков рядом с каждым элементом списка. Пользователь имеет возможность отметить один или несколько элементов списка, выставив напротив его флажок.

Выпадающий список (ComboBox)удобен тем, что не занимает много пространства на форме. Постоянно на форме представлено только одно значение этого списка. При необходимости пользователь может раскрыть список и выбрать другое интересующее его значение. Кроме того, режим DropDown дает пользователю возможность вводить собственное значение при отсутствии необходимого значения в списке.

Русские Блоги

Введение в программирование на C #, применение элементов управления C # (textBox, checkBox, listBox, listView и т. Д.)

Откройте Visual Stdio для программирования

1. Применение элемента управления textBox:

Напишите код для окна входа в систему:

2. Применение элемента управления checkBox (флажок), дополните код этой картинки

Добавьте код в отображаемую кнопку личного хобби:

private void button1_Click(object sender, EventArgs e)

else

>

3. Приложение элемента управления listView, вытащите элемент управления listView, установите свойства:

Атрибут представления — DeTails

Открытые столбцы для добавления элементов данных в элемент управления listView

Результаты следующие: добавьте обработчики событий для кнопок добавления и удаления соответственно.

Name already in use

OAP / articles / t8_elements.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

0 contributors

Users who have contributed to this file
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Обзор элементов управления и их свойств

Чтобы как-то взаимодействовать с пользователем, получать от пользователя ввод с клавиатуры или мыши и использовать введенные данные в программе, нам нужны элементы управления. WPF предлагает нам стандартный набор элементов управления

Все элементы управления могут быть условно разделены на несколько подгрупп:

Элементы управления содержимым, например кнопки (Button), метки (Label)

Специальные контейнеры, которые содержат другие элементы, но в отличие от элементов Grid или Canvas не являются контейнерами компоновки — ScrollViewer, GroupBox

Декораторы, чьё предназначение создание определенного фона вокруг вложенных элементов, например, Border или Viewbox.

Элементы управления списками, например, ListBox, ComboBox.

Текстовые элементы управления, например, TextBox, RichTextBox.

Элементы, основанные на диапазонах значений, например, ProgressBar, Slider.

Элементы для работ с датами, например, DatePicker и Calendar.

Остальные элементы управления, которые не вошли в предыдущие подгруппы, например, Image.

Рассмотрим некоторые из основных свойств, которые наследуются элементами управления.

Name

Наверное важнейшее свойство. По установленному имени впоследствии можно будет обращаться к элементу, как в коде, так и в xaml разметке. Например, в xaml-разметке у нас определена следующая кнопка:

Здесь у нас задан атрибут Click с названием метода обработчика button1_Click, который будет определен в файле кода C# и будет вызываться по нажатию кнопки. Тогда в связанном файле кода C# мы можем обратиться к этой кнопке:

Поскольку свойство Name имеет значение button1, то через это значение мы можем обратиться к кнопке в коде.

Visibility

Это свойство устанавливает параметры видимости элемента и может принимать одно из трех значений:

  • Visible — элемент виден и участвует в компоновке.
  • Collapsed — элемент не виден и не участвует в компоновке.
  • Hidden — элемент не виден, но при этом участвует в компоновке.

Различия между Collapsed и Hidden можно продемонстрировать на примере:

Свойства настройки шрифтов

FontFamily — определяет семейство шрифта (например, Arial, Verdana и т.д.)

FontSize — определяет высоту шрифта

FontStyle — определяет наклон шрифта, принимает одно из трех значений — Normal, Italic, Oblique.

FontWeight — определяет толщину шрифта и принимает ряд значений, как Black, Bold и др.

FontStretch — определяет, как будет растягивать или сжимать текст, например, значение Condensed сжимает текст, а Expanded — растягивает.

Cursor

Это свойство позволяет нам получить или установить курсор для элемента управления в одно из значений, например, Hand, Arrow, Wait и др. Например, установка курсора в коде c#: button1.Cursor=Cursors.Hand;

FlowDirection

Данное свойство задает направление текста. Если оно равно RightToLeft, то текст начинается с правого края, если — LeftToRight, то с левого.

Цвета фона и шрифта

Свойства Background и Foreground задают соответственно цвет фона и текста элемента управления.

Простейший способ задания цвета в коде xaml: Background=»#ffffff» . В качестве значения свойство Background (Foreground) может принимать запись в виде шестнадцатеричного значения в формате #rrggbb , где rr — красная составляющая, gg — зеленая составляющая, а bb — синяя. Также можно задать цвет в формате #aarrggbb .

Либо можно использовать названия цветов напрямую:

Элементы управления содержимым

Элементы управления содержимым (content controls) представляют такие элементы управления, которые содержат в себе другой элемент.

К элементам управления содержимым относятся такие элементы как Button, Label, ToggleButton, ToolTip, RadioButton, CheckBox, GroupBox, TabItem, Expander, ScrollViewer. Также элементом управления содержимым является и главный элемент окна — Window.

Отличительной чертой всех этих элементов является наличие свойства Content, которое и устанавливает вложенный элемент. В этом элементы управления содержимым схожи с контейнерами компоновки. Только контейнеры могут иметь множество вложенных элементов, а элементы управления содержимым только один.

Свойство Content может представлять любой объект, который может относиться к одному из двух типов:

Объект класса, не наследующего от UIElement. Для такого объекта вызывается метод ToString(), который возвращает строковое преставление объекта. Затем эта строка устанавливается в качестве содержимого.

Объект класса, наследующего от UIElement. Для такого объекта вызывается метод UIElement.OnRender(), который выполняет отрисовку внутри элемента управления содержимым.

Рассмотрим на примере кнопки, которая является элементом управления содержимым:

В качестве содержимого устанавливается обычная строка. Этот же пример мы можем в XAML прописать иначе:

Либо мы можем использовать сокращенное неявное определения свойства Content:

Возьмем другой пример. Определим кнопку с именем button1:

А в файле кода MainWindow.xaml.cs присвоим её свойству Content какой-либо объект:

В итоге число конвертируется в строку и устанавливается в качесте содержимого.

Иначе все будет работать, если мы в качестве содержимого используем объект, унаследованный от UIElement:

Теперь в качестве содержимого будет использоваться другая кнопка, для которой при визуализации будет вызываться метод OnRender():

В отличие от контейнеров компоновки для элементов управления содержимым мы можем задать только один вложенный элемент. Если же нам надо вложить в элемент управления содержимым несколько элементов, то мы можем использовать те же контейнеры компоновки:

Выравнивание содержимого внутри элемента задается свойствами HorizontalContentAlignment (выравнивание по горизонтали) и VerticalContentAlignment (выравнивание по вертикали), аналогичны свойствам VerticalAlignment/HorizontalAlignment. Свойство HorizontalContentAlignment принимает значения Left, Right, Center (положение по центру), Stretch (растяжение по всей ширине). Например:

VerticalContentAlignment принимает значения Top (положение в верху), Bottom (положение внизу), Center (положение по центру), Stretch (растяжение по всей высоте)

Padding

С помощью свойства Padding мы можем установить отступ содержимого элемента:

Свойство Padding задаётся в формате Padding=»отступ_слева отступ_сверху отступ_справа отступ_снизу» .

Если со всех четырех сторон предполагается один и тот же отступ, то, как и в случае с Margin, мы можем задать одно число:

Важно понимать, от какой точки задается отступ. В случае с первой кнопкой в ней контект выравнивается по левому краю, поэтому отступ слева будет предполагать отступ от левого края элемента Button. А вторая кнопка располагается по центру. Поэтому для нее отступ слева предполагает отступ от той точки, в которой содержимое бы находилось при центрировании без применения Padding.

Комбинация значений свойств HorizontalContentAlignment/VerticalContentAlignment и Padding позволяет оптимальным образом задать расположение содержимого.

В WPF кнопки представлены целым рядом классов, которые наследуются от базового класса ButtonBase:

Button

Элемент Button представляет обычную кнопку:

От класса ButtonBase кнопка наследует ряд событий, например, Click, которые позволяют обрабатывать пользовательский ввод.

Чтобы связать кнопку с обработчиком события нажатия, нам надо определить в самой кнопке атрибут Click. А значением этого атрибута будет название обработчика в коде C#. А затем в самом коде C# определить этот обработчик.

Например, код xaml:

И обработчик в коде C#:

Либо можно не задавать обработчик через атрибут, а стандартным образом для C# прописать в коде: button1.Click+=Button_Click;

К унаследованным свойствам кнопка имеет такие свойства как IsDefault и IsCancel, которые принимают значения true и false.

Если свойство IsDefault установлено в true, то при нажатии клавиши Enter будет вызываться обработчик нажатия этой кнопки.

Аналогично если свойство IsCancel будет установлено в true, то при нажатии на клавишу Esc будет вызываться обработчик нажатия этой кнопки.

Например, определим код xaml:

А в коде MainWindow.xaml.cs определим следующий код C#:

Теперь при нажатии на клавишу Enter будет отображаться сообщение, а при нажатии на Esc будет происходить выход из приложения и закрытие окна.

RepeatButton

Отличительная особенность элемента RepeatButton — непрерывная генерация события Click, пока нажата кнопка. Интервал генерации события корректируется свойствами Delay и Interval.

Сам по себе элемент RepeatButton редко используется, однако он может служить основой для создания ползунка в элементах ScrollBar и ScrollViewer, в которых нажатие на ползунок инициирует постоянную прокрутку.

ToggleButton

Представляет элементарный переключатель. Может находиться в трех состояниях — true, false и «нулевом» (неотмеченном) состоянии, а его значение представляет значение типа bool? в языке C#. Состояние можно установить или получить с помощью свойства IsChecked. Также добавляет три события — Checked (переход в отмеченное состояние), Unchecked (снятие отметки) и Intermediate (если значение равно null). Чтобы отрабатывать все три события, надо установить свойство IsThreeState=»True»

ToggleButton, как правило, сам по себе тоже редко используется, однако при этом он служит основой для создания других более функциональных элементов, таких как checkbox и radiobutton.

CheckBox

Элемент CheckBox представляет собой обычный флажок. Данный элемент является производным от класса ToggleButton и поэтому может принимать также три состояния: Checked, Unchecked и Intermediate.

Чтобы получить или установить определенное состояние, надо использовать свойство IsChecked, которое также унаследовано от ToggleButton:

Установка свойства IsChecked=» » задает неопределенное состояние для элемента checkbox. Остальные два состояния задаются с помощью True и False. В данном примере также привязан к двум флажкам обработчик события Checked. Это событие возникает при установке checkbox в отмеченное состояние.

А атрибут IsThreeState=»True» указывает, что флажок может находиться в трех состояниях.

Ключевыми событиями флажка являются события Checked (генерируется при установке флажка в отмеченное состояние), Unchecked (генерируется при снятии отметки с флажка) и Indeterminate (флажок переведен в неопределенное состояние). Например, определим флажок:

А в файле кода C# пропишем для него обработчики:

RadioButton

Элемент управления, также производный от ToggleButton, представляющий переключатель. Главная его особенность — поддержка групп. Несколько элементов RadioButton можно объединить в группы, и в один момент времени мы можем выбрать из этой группы только один переключатель. Например,

Чтобы включить элемент в определенную группу, используется свойство GroupName. В данном случае у нас две группы — Languages и Technologies. Мы можем отметить не более одного элемента RadioButton в пределах одной группы, зафиксировав тем самым выбор из нескольких возможностей.

Чтобы проследить за выбором того или иного элемента, мы также можем определить у элементов событие Checked и его обрабатывать в коде:

Обработчик в файле кода:

Текстовые элементы управления

TextBox

Этот элемент представляет поле для ввода текстовой информации.

Он имеет свойства TextWrapping, TextAlignment и TextDecorations.

Свойство TextWrapping позволяет переносить текст при установке этого свойства TextWrapping=»Wrap» . По умолчанию это свойство имеет значение NoWrap, поэтому текст не переносится.

Свойство TextAlignment выравнивает текст по центру (значение Center), правому (Right) или левому краю (Left): <TextBlock TextAlignment=»Right»>

Для декорации текста используется свойство TextDecorations, например, если TextDecorations=»Underline» , то текст будет подчеркнут.

С помощью свойства MaxLength можно задать предельное количество вводимых символов.

В коде C# мы можем обработать событие изменения текста:

По умолчанию, если вводимый текст превышает установленные границы поля, то текстовое поле растет, чтобы вместить весь текст. Но визуально это не очень хорошо выглядит. Поэтомуo мы можем перенести непомещающийся текст на новую строку, установив свойство TextWrapping=»Wrap» .

Чобы переводить по нажатию на клавишу Enter курсор на следующую строку, нам надо установить свойство AcceptsReturn=»True» .

Также мы можем добавить полю возможность создавать табуляцию с помощью клавиши Tab, установив свойство AcceptsTab=»True»

Если нам вдруг потребуется перенести текст на другую строку, то тогда мы можем использовать элемент LineBreak:

Для отображения полос прокрутки TextBox поддерживает свойства VerticalScrollBarVisibility и НоrizontalScrollBarVisibility:

Возможно, при создании приложения нам потребуется сделать текстовое поле недоступным для ввода (на время в зависимости от условий или вообще), тогда для этого нам надо установить свойство IsReadOnly=»True» .

Для выделения текста есть свойства SelectionStart, SelectionLength и SelectionText. Например, выделим программно текст по нажатию кнопки:

Обработчик нажатия кнопки:

Проверка орфографии

TextBox обладает встроенной поддержкой орфографии. Чтобы ее задействовать, надо установить свойство SpellCheck.IsEnabled=»True» . Кроме того, по умолчанию проверка орфографии распространяется только на английский язык, поэтому, если приложение заточено под другой язык, нам надо его явным образом указать через свойство Language:

Метка (Label)

Главной особенностью меток является поддержка мнемонических команд-клавиш быстрого доступа, которые передают фокус связанному элементу. Например,

Теперь, нажав на клавишу «п», мы переведем фокус на связанное текстовое поле. При вызове приложения подчеркивание не отображается, чтобы отображать подчеркивание, надо нажать на клавишу Alt. Тогда чтобы перевести фокус на связанное текстовое поле необходимо будет нажать сочетание Alt + «п» .

PasswordBox

Элемент предназначен для ввода парольной информации. По сути это тоже текстовое поле, только для ввода символов используется маска. Свойство PasswordChar устанавливает символ маски, отображаемый при вводе пароля. Если это свойство не задано, то по умолчанию для маски символа используется черная точка. Свойство Password устанавливает парольную строку, отображаемую по умолчанию при загрузке окна приложения.

RichTextBox

Для вывода текстового содержимого, насыщенного форматированием, графикой, предназначен RichTextBox. Можно даже сказать, что он выводит не просто текст, а документы с более сложным форматированием, чем обычный TextBox. Более подробно о нем, а также как на его основе создать простой текстовый редактор, мы поговорим в лекции, посвященной документам.

Элементы управления списками

Эти элементы представлены в WPF довольно широко. Все они являются производными от класса ItemsControl. Все они содержат коллекцию элементов. Элементы могут быть напрямую добавлены в коллекцию, возможна также привязка некоторого массива данных к коллекции.

Возьмем простейший элемент-список — ListBox:

Все элементы, размещенные внутри спискового элемента ListBox, представляют элементы списка.

Коллекция объектов внутри элемента-списка доступна в виде свойства Items. Для управления элементами из этой коллекции мы можем использовать следующие методы:

  • Add(object item): добавление элемента
  • Clear(): полная очистка коллекции
  • Insert(int index, object item): вставка элемента по определенному индексу в коллекции
  • Remove(object item): удаление элемента
  • RemoveAt(int index): удаление элемента по индексу

А свойство Count позволяет узнать, сколько элементов в коллекции.

Например, применительно к вышеопределенному списку мы бы могли написать в коде C#:

Нам необязательно вручную заполнять значения элемента управления списком, так как мы можем установить свойство ItemsSource, задав в качестве параметра коллекцию, из которой будет формироваться элемент управления списком. Например, в коде xaml-разметки определим пустой список:

А в файле отделенного кода выполним наполнение списка:

Свойство ItemsSource в качестве значения принимает массив, хотя это моет быть и список типа List. И каждый элемент этого массива переходит в ListBox.

Еще одно важное свойство списковых элементов — это свойство DisplayMemberPath. Оно позволяет выбирать для отображения элементов значение одного из свойств объекта. Например, создадим в коде новый класс Phone:

Теперь создадим в xaml набор объектов этого класса Phone и выведем в списке значение свойства Title этих объектов:

Поскольку мы используем класс, определенный в текущем проекте, то соответственно у нас обязательно должно быть подключено пространство имен проекте: xmlns:local=»clr-namespace:ControlsApp» . В принципе по умолчанию WPF уже его подключает. Кроме того, чтобы не возникало проблем с разметкой XAML, желательно сделать перестроение проекта. И в итоге окно нам выведет только названия смартфонов:

То же самое мы бы могли сделать программным способом:

Все элементы управления списками поддерживают выделение входящих элементов. Выделенный элемент(ы) можно получить с помощью свойств SelectedItem(SelectedItems), а получить индекс выделенного элемента — с помощью свойства SelectedIndex. Свойство SelectedValue позволяет получить значение выделенного элемента.

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

А в файле кода определим обработчик для этого события:

Важно учитывать, что так как в разметке xaml в списке определены элементы Phone, то в коде мы можем привести объект list.SelectedItem к типу Phone.

ComboBox

ComboBox содержит коллекцию элементов и образует выпадающий список:

ComboBoxItem

В качестве элементов в ComboBox-e мы можем использовать различные компоненты, но наиболее эффективным является применение элемента ComboBoxItem. ComboBoxItem представляет элемент управления содержимым, в который через свойство Content мы можем поместить другие элементы. Например:

Для создания первого элемента использовался элемент ComboBoxItem. Для второго и третьего такие элементы создаются неявно. Однако использование ComboBoxItem имеет преимущество, так как мы можем выделить данный элемент, установив свойство IsSelected=»True» , либо можем сделать недоступным с помощью установки свойства IsEnabled=»False» .

Событие SelectionChanged

Обрабатывая событие SelectionChanged, мы можем динамически получать выделенный элемент:

Обработка события в коде C#:

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

Свойства

Установка свойства IsEditable=»True» позволяет вводить в поле списка начальные символы, а затем функция автозаполнения подставит подходящий результат. По умолчанию свойство имеет значение False.

Это свойство работает в комбинации со свойством IsReadOnly: оно указывает, является поле ввода доступным только для чтения. По умолчанию имеет значение False, поэтому если IsEditable=»True» , то мы можем вводить туда произвольный текст.

Еще одно свойство StaysOpenOnEdit при установке в True позволяет сделать список раскрытым на время ввода значений в поле ввода.

DataGrid во многом похож на ListView, но более сложный по характеру и допускает редактирование содержимого таблицы.

В разделе о ListView мы создали класс Phone, объекты которого выводили в список:

Теперь же выведем объекты в таблицу DataGrid. Чтобы DataGrid автоматически разбивал таблицу на столбцы, установим свойство AutoGenerateColumns=»True» (вроде можно и не устанавливать — оно по-умолчанию включено):

В данном случае префикс local ссылается на пространство имен текущего проекта, в котором определен класс Phone ( xmlns:local=»clr-namespace:Controls» ), а col — префикс-ссылка на пространство имен System.Collections ( xmlns:col=»clr-namespace:System.Collections;assembly=mscorlib» ). И это даст в итоге следующий вывод:

Программная установка источника для DataGrid:

Некоторые полезные свойства DataGrid

RowBackground и AlternatingRowBackground Устанавливают фон строки. Если установлены оба свойства, цветовой фон чередуется: RowBackground — для нечетных строк и AlternatingRowBackground — для четных
ColumnHeaderHeight Устанавливает высоту строки названий столбцов.
ColumnWidth Устанавливает ширину столбцов.
RowHeight Устанавливает высоту строк.
GridLinesVisibility Устанавливает видимость линий, разделяющих столбцы и строки. Имеет четыре значения — All — видны все линии, Horizontal — видны только горизонтальные линии, Vertical — видны только вертикальные линии, None — линии отсутствуют
HeadersVisibility Задает видимость заголовков
HorizontalGridLinesBrush и VerticalGridLinesBrush Задает цвет горизонтальных и вертикальных линий соответственно

Хотя предыдущий пример довольно прост, в нем есть несколько недочетов. Во-первых, у нас нет возможности повлиять на расстановку столбцов. Во-вторых, заголовки определены по названиям свойств, которые на английском языке, а хотелось бы на русском. В этом случае мы должны определить свойства отображения столбцов сами. Для этого надо воспользоваться свойством DataGrid.Columns и определить коллекцию столбцов для отображения в таблице.

Причем можно задать также и другой тип столбца, отличный от текстового. DataGrid поддерживает следующие варианты столбцов:

DataGridTextColumn Отображает элемент TextBlock или TextBox при редактировании
DataGridHyperlinkColumn Представляет гиперссылку и позволяет переходить по указанному адресу
DataGridCheckBoxColumn Отображает элемент CheckBox
DataGridComboBoxColumn Отображает выпадающий список — элемент ComboBox
DataGridTemplateColumn Позволяет задать специфичный шаблон для отображения столбца

Перепишем предыдущий пример с учетом новой информации:

Среди свойств DataGrid одним из самых интересных является RowDetailsTemplate. Оно позволяет задать шаблон отображения дополнительной информации касательно данной строки. Изменим элемент DataGrid:

Работа с изображениями. Image и InkCanvas

Элемент Image

Элемент Image предназначен для работы с изображениями. Свойство Source позволяет задать путь к изображению, например:

WPF поддерживает различны форматы изображений: .bmp, .png, .gif, .jpg и т.д.

Также элемент позволяет проводить некоторые простейшие транформации с изображениями. Например, с помощью объекта FormatConvertedBitmap и его свойства DestinationFormat можно получить новое изображение:

InkCanvas

InkCanvas представляет собой полотно, на котором можно рисовать. Первоначально оно предназначалось для стилуса, но в WPF есть поддержка также и для мыши для обычных ПК. Его очень просто использовать:

Либо мы можем вложить в InkCanvas какое-нибудь изображение и на нем уже рисовать:

Все рисование в итоге представляется в виде штрихов — элементов класса System.Windows.Ink.Stroke и хранится в коллекции Strokes, определенной в классе InkCanvas.

Режим рисования

InkCanvas имеет несколько режимов, они задаются с помощью свойства EditingMode, значения для которого берутся из перечисления InkCanvasEditingMode.. Эти значения бывают следующими:

  • Ink: используется по умолчанию и предполагает рисование стилусом или мышью
  • InkAndGesture: рисование с помощью мыши/стилуса, а также с помощью жестов (Up, Down, Tap и др.)
  • GestureOnly: рисование только с помощью жестов пользователя
  • EraseByStroke: стирание всего штриха стилусом
  • EraseByPoint: стирание только части штриха, к которой прикоснулся стилус
  • Select: выделение всех штрихов при касании
  • None: отсутствие какого-либо действия

Используя эти значения и обрабатывая события InkCanvas, такие как StrokeCollected (штрих нарисован), StrokeErased (штрих стерли) и др., можно управлять набором штрихов и создавать более функциональные приложения на основе InkCanvas.

Textbox c и listbox в чем разница

Элемент предназначен для вывода текстовой информации, для создания простых надписей:

Ключевым свойством здесь является свойство Text , которое задает текстовое содержимое. Причем в случае <TextBlock>Текст1</TextBlock> данное свойство задается неявно.

С помощью таких свойств, как FontFamily, TextDecorations и др., мы можем настроить отображение текста. Однако мы можем задать и более сложное форматирование, например:

TextBlock в WPF

Элементы Run представляют куски обычного текста, для которых можно задать отдельное форматирование.

Для изменения параметров отображаемого текста данный элемент имеет такие свойства, как LineHeight , TextWrapping и TextAlignment .

Свойство LineHeight позволяет указывать высоту строк.

Свойство TextWrapping позволяет переносить текст при установке этого свойства TextWrapping=»Wrap» . По умолчанию это свойство имеет значение NoWrap , поэтому текст не переносится.

Свойство TextAlignment выравнивает текст по центру (значение Center), правому (Right) или левому краю (Left): <TextBlock TextAlignment=»Right»>

Для декорации текста используется свойство TextDecorations , например, если TextDecorations=»Underline» , то текст будет подчеркнут.

Если нам вдруг потребуется перенести текст на другую строку, то тогда мы можем использовать элемент LineBreak :

TextBox

Если TextBlock просто выводит статический текст, то этот элемент представляет поле для ввода текстовой информации.

Он также, как и TextBlock, имеет свойства TextWrapping , TextAlignment и TextDecorations .

С помощью свойства MaxLength можно задать предельное количество вводимых символов.

В коде C# мы можем обработать событие изменения текста:

По умолчанию, если вводимый текст превышает установленные границы поля, то текстовое поле растет, чтобы вместить весь текст. Но визуально это не очень хорошо выглядит. Поэтому, как и в случае с TextBlock, мы можем перенести непомещающийся текст на новую строку, установив свойство TextWrapping=»Wrap».

Чобы переводить по нажатию на клавишу Enter курсор на следующую строку, нам надо установить свойство AcceptsReturn=»True» .

Также мы можем добавить полю возможность создавать табуляцию с помощью клавиши Tab, установив свойство AcceptsTab=»True»

Для отображения полос прокрутки TextBox поддерживает свойства VerticalScrollBarVisibility и НоrizontalScrollBarVisibility :

Возможно, при создании приложения нам потребуется сделать текстовое поле недоступным для ввода (на время в зависимости от условий или вообще), тогда для этого нам надо установить свойство IsReadOnly=»True» .

Для выделения текста есть свойства SelectionStart , SelectionLength и SelectionText . Например, выделим программно текст по нажатию кнопки:

Обработчик нажатия кнопки:

Проверка орфографии

TextBox обладает встроенной поддержкой орфографии. Чтобы ее задействовать, надо установить свойство SpellCheck.IsEnabled=»True» . Кроме того, по умолчанию проверка орфографии распространяется только на английский язык, поэтому, если приложение заточено под другой язык, нам надо его явным образом указать через свойство Language :

Проверка орфографии в WPF

Метка (Label)

Главной особенностью меток является поддержка мнемонических команд-клавиш быстрого доступа, которые передают фокус связанному элементу. Например,

Теперь, нажав на клавишу «п», мы переведем фокус на связанное текстовое поле. При вызове приложения подчеркивание не отображается, чтобы отображать подчеркивание, надо нажать на клавишу Alt. Тогда чтобы перевести фокус на связанное текстовое поле необходимо будет нажать сочетание Alt + «п». Если не предполагается использование клавиш быстрого доступа, то для вывода обычной текста вместо меток лучше использовать элемент TextBlock.

PasswordBox

Элемент предназначен для ввода парольной информации. По сути это тоже текстовое поле, только для ввода символов используется маска. Свойство PasswordChar устанавливает символ маски, отображаемый при вводе пароля. Если это свойство не задано, то по умолчанию для маски символа используется черная точка. Свойство Password устанавливает парольную строку, отображаемую по умолчанию при загрузке окна приложения.

PasswordBox в WPF

RichTextBox

Для вывода текстового содержимого, насыщенного форматированием, графикой, предназначен RichTextBox. Можно даже сказать, что он выводит не просто текст, а документы с более сложным форматированием, чем обычный TextBox. Более подробно о нем, а также как на его основе создать простой текстовый редактор, мы поговорим в главе, посвященной документам.

Макросы. Дальнейшая информация об объектах

Использование списков предоставляет большие возможности пользователю. Элемент управления ListBox имеет более 50 свойств. Свойство List задаeт/возвращает содержимое строки списка; свойство ListCount возвращает число элементов списка, нумерация элементов списка проводится с 0. Свойство ListIndex задаeт/возвращает номер маркированной строки ( ListIndex = -1, если ни одна строка не маркирована). Если строки должны быть отсортированы по алфавиту, то свойству Sorted нужно присвоить значение True . Важнейшими из около 10 методов являются:

  • AddItem элемент[, индекс] — включить элемент в список в позицию «индекс»,
  • RemoveItem индекс_элемента — удалить элемент из списка,
  • Clear — очистить весь список.

Основное событие — Click , которое вызывается при щелчке на некотором элементе списка; часто применяемое событие — DblClick (двойной щелчок на элементе списка), используемое, например, для программируемого перемещения элементов одного списка в другой список.

В поле элемента управления ComboBox можно выбрать элемент списка как в ListBox , можно вводить данные в имеющееся поле ввода. ComboBox имеет многие свойства ListBox и TextBox . Свойство Style определяет функционирование и внешний вид ComboBox . В табл. 5.3 представлены функциональные возможности элемента управления ComboBox.

Таблица 5.3. Функциональные возможности ComboBox

Значение свойства Style Возможности
0 ComboBox представляет собой раскрывающееся комбинированное поле — текстовое поле для записи и раскрывающийся список
1 Текстовое поле и постоянно открытый список
2 Отличие от типа 0 состоит в том, что нет возможности вводить данные

Основными событиями являются: Click — используется для выбора элемента списка и Change — для изменения записи в поле ввода данных. Методы совпадают с методами поля списка.

При работе со списками часто маркируют строку и затем делают щелчок на командной кнопке, процедура которой обрабатывает маркированную строку. Процедуру обработки элемента списка можно также создавать как процедуру события DblClick списка, выполняемую после двойного щелчка на элементе списка.

Глава 6. Работа со списками в Visual Studio 2005

Для изучения работы со списками нам вполне подойдет предыдущий проект решения, все что сделаем — удалим коды в обработчиках событий нажатия кнопок и контролы (Рис.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 показывает возможность использовать в элементах списка символы табуляции.

Номера опций отстоят от слова «Опция» на расстоянии, определяемом табуляцией при listBox1.UseTabStops = true; и будут отображены слитно со словом, а сам символ табуляции как нечитаемый, при listBox1.UseTabStops = false.

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 имеет более 50 свойств. Свойство List задаeт/возвращает содержимое строки списка; свойство ListCount возвращает число элементов списка, нумерация элементов списка проводится с 0. Свойство ListIndex задаeт/возвращает номер маркированной строки ( ListIndex = -1, если ни одна строка не маркирована). Если строки должны быть отсортированы по алфавиту, то свойству Sorted нужно присвоить значение True . Важнейшими из около 10 методов являются:

  • AddItem элемент[, индекс] — включить элемент в список в позицию «индекс»,
  • RemoveItem индекс_элемента — удалить элемент из списка,
  • Clear — очистить весь список.

Основное событие — Click , которое вызывается при щелчке на некотором элементе списка; часто применяемое событие — DblClick (двойной щелчок на элементе списка), используемое, например, для программируемого перемещения элементов одного списка в другой список.

В поле элемента управления ComboBox можно выбрать элемент списка как в ListBox , можно вводить данные в имеющееся поле ввода. ComboBox имеет многие свойства ListBox и TextBox . Свойство Style определяет функционирование и внешний вид ComboBox . В табл. 5.3 представлены функциональные возможности элемента управления ComboBox.

Таблица 5.3. Функциональные возможности ComboBox

Значение свойства Style Возможности
0 ComboBox представляет собой раскрывающееся комбинированное поле — текстовое поле для записи и раскрывающийся список
1 Текстовое поле и постоянно открытый список
2 Отличие от типа 0 состоит в том, что нет возможности вводить данные

Основными событиями являются: Click — используется для выбора элемента списка и Change — для изменения записи в поле ввода данных. Методы совпадают с методами поля списка.

При работе со списками часто маркируют строку и затем делают щелчок на командной кнопке, процедура которой обрабатывает маркированную строку. Процедуру обработки элемента списка можно также создавать как процедуру события DblClick списка, выполняемую после двойного щелчка на элементе списка.

Textbox c и listbox в чем разница

Текст из textbox добавить в ListBox
Текст из textbox Не могли бы Вы (форумчане) помочь: как из textbox достать текст которыйы ты.

В TextBox выводится только последнее слово из ListBox
Что странно когда пишу msgbox list1.list(I) все работает а когда text1.text=list1.list(i) то в.

Добавить в ListBox сложенные строки нескольких TextBox
Как связать несколько texBox-ов Например: я хочу добавит в listBox символы или слова и 3-ех.

Что-то типа того?

Листбокс и сам неплохой контейнер с которым можно работать, не знаю зачем тебе тут переменная, но я бы, наверно, в этом случае использовал список, но он по функционалу мало чем отличается от самого листбокса. =)

При нажатии на кнопку «Добавить» информация из TextBox должна добавляться в ListBox
1. Создать Windows Forms приложение 2. Добавить на форму TextBox 3. Добавить на форму ListBox.

При нажатии на кнопку Button в ListBox добавить строку, введенную в TextBox
как сделать так что бы при вводе текста в textbox при нажатии на кнопку button в listbox.

Как через listbox добавить название меню, а через listbox обработчик?
Как известно, в ListBox можно добавлять элементы любого типа. Заполните ListBox несколькими.

Использование textBox как listBox
Привет. У меня проблема. Мне нужно выводить в отдельное окно как в чате, строки по отдельности.

Глава 6. Работа со списками в Visual Studio 2005

Для изучения работы со списками нам вполне подойдет предыдущий проект решения, все что сделаем — удалим коды в обработчиках событий нажатия кнопок и контролы (Рис.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 показывает возможность использовать в элементах списка символы табуляции.

Номера опций отстоят от слова «Опция» на расстоянии, определяемом табуляцией при listBox1.UseTabStops = true; и будут отображены слитно со словом, а сам символ табуляции как нечитаемый, при listBox1.UseTabStops = false.

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.):

Textbox c и listbox в чем разница

Снова становимся на тенистый путь программиста. Поговорим о о тех объектах, которые мы пока не затронули (конечно только пока из тех, которые стандартно лежат в окне Панели инструментов, то есть слева, где наши объекты формы). Вот на рисуночке я обвел их кружочками. Хочешь поговорить об этом? Ну и ладно, наплевать. Все равно поговорим.

До фига получилось. Ну ничего. Это вобщем-то простые объекты, но в один пример запихнуть их все, пожалуй, не удасться.

Создадим новый exe-проект и положим на форму, например три флажка (CheckBox’а). Ну и вот, по умолчанию в квадратике нет ничего и главное значение этого объекта .Value равно 0 — Неотмечено. Когда мы щелкаем по флажку, то появляется галочка, и значение .Value становится равным 1-Отмечено. Bот и все. Есть еще и третье значение 2 — Выключено, но установить его щелканьем мышки не удасться. Надо либо в окне свойств задать значение, либо в коде написать
Check1.Value=2
при этом квадратик станет сереньким, типа выключился, но если по нему щелкнуть, то он опять примет значение включенного.

Аналогично работает и и радиокнопка (OptionButton) за исключением следующего. Первое: у OptionButton только два значения и принимают они "False" — выключено, точки в кружочке нет, и "True" — включено, точка есть. А второе, если вы на форму положите пять Check’ов, то вы можете включить сколько угодно из них, хоть три, хоть все пять. А вот Option можно включить только один. Если щелкнешь по другому, то включенный тут же выключится.
Кроме того, и у Check и у Option есть еще одно свойство Style. По умолчанию оно равно 0 — Standart. Но если его поставить в состояние 1- Graphical, то бац, твоя фигня с галочкой превращается по виду в кнопку. Внешне от кнопки Command она отличается тем, что в нажатом состоянии она показана, как нажатая. Ну и само собой свойство Caption позволяет Вам обзывать эти объекты, как угодно.

Далее объект Фрейм (Frame). Это как-бы окно, в которое можно запихивать флажки, радиокнопки, да что угодно. Но чтоб объект попал во Frame, надо его туда класть сразу. Если ты его создашь в форме вне фрейма, а потом перетащишь его во фрейм, то ничего не выйдет. Объект просто ляжет сверху. Ну и передвигая фрейм, ты сразу двигаешь и запихнутые туда объекты, что удобно. А если уничтожишь фрейм, то погибнут и все встроенные в него объекты. Вообще фреймами удобно делить форму на зоны. Кроме того, радиокнопки одного фрейма не связаны с радиокнопками другого или с внешними (на форме). Т.е. ты в каждом фрейме можешь создавать свой блок кнопок.

Программка-тестер (не тостер!).

Сейчас мы напишем программку для тестов, где все это попробуем, а заодно потренируемся работать с текстовыми файлами, о чем говорилось в прошлой главе. Смысл программки в том, что мы готовим тест, например, психологический и на вопрос предлагаем испытуемому несколько ответов. По результатам теста выводим характеристику испытуемому.
Во-первых сделаем одну форму Form1 для создания контрольных вопросов, которую испытуемому видеть ни к чему — это форма для руководителя проекта тестирования. А вторая — Form2 — предлагается испытуемому для проведения теста.
Создадим новый exe-проект и на Form1 положим Text1 для занесения вопроса (не забудь его свойство Multiline поставить в True), Text2, Text3 и Text4 — для ответов, Text5, Text6, и Text7 для баллов по каждому ответу, кнопку Command1 для записи этого в файл и кнопки Command2 и Command3 для навигации по файлам (типа вверх-вниз). Я не стал использовать ScrollBar, чтобы не затемнять смысл программы. Поскольку мы еще не все познали-изучили (массивы или там файлы с прямым доступом), то будем записывать каждый вопрос в отдельный файл. Поэтому один Label1 надо положить сразу, он будет показывать номер вопроса, который будет и именем txt-файлов. А лучше сразу положить еще Label2 и Label3. У тебя должно получиться что-то типа рис.17


Рисунок 17.

Теперь убираем во всех Text’ах свойство Text (просто стираем в окне свойств), затем в свойстве Caption лейблов Label2 и Label3 пишем Ответы и Баллы соответственно. В свойствах Caption у кнопки Command1 пишем Сохранить вопрос, у кнопки Command2Назад, у кнопки Command3Вперед и изменяем их размеры соответственно надписи. Теперь пишем код в окне кода.

Перво-наперво, конечно Option Explicit, если вы не смогли установить VB, чтоб он прописывал это автоматом (я рассказывал как). Потом там — же, в области (General) — (Declarations) объявляем следующие переменные:

Option Explicit
‘Для хранения номера вопроса (числовое, потому, что будем
‘складывать и вычитать) и одновременно имя файла (строковое).
‘ Вот единственный случай использования типа Variant
Dim NomVopros As Variant
‘и для каждого нашего текстбокса
Dim Vopros As String
‘Text1-строковое, здесь пишем вопрос
Dim Otvet1 As String
‘Text2-строковое- пишем возможный ответ №1
Dim Otvet2 As String
‘Text3 строковое- пишем возможный ответ №2
Dim Otvet3 As String
‘Text4 строковое- пишем возможный ответ №3
Dim Ball1 As Long
‘Text5 -числовое — баллы к ответу №1
Dim Ball2 As Long
‘Text6-числовое — баллы к ответу №2
Dim Ball3 As Long
‘Text7-числовое — баллы к ответу №3

Почему так? На фик нам эти переменные? Писали бы в файл и грузили бы сразу из TextBox’ов. А потому, во-первых, что из TextBox’ов все бы записывалось как текст (строка), а у нас переменные разных типов, а во-вторых, при считывании вообще возникла бы ошибка, потому что нельзя так. И вообще, лучше всегда использовать переменные, а не объекты. Далее объявим еще две переменные, одна просто для получения свободного номера файла

Dim F As Long

а вторая, булева, т.е. логическая (ты помнишь, она может принимать только два значения False и True). Мы ее будем использовать, как флаг (т.е. переменная, которая показывает состояние чего-либо, как на флоте: флаг поднял (в смысле True) — корабль плывет, опустил (False), крабля напрвляется ко дну.), индикации состояния чего, позже скажу

Dim Flag As Boolean

Теперь немного прервемся. Нам самое время поговорить о файлах. Поскольку мы с ними так лихо начали работать, то нам как-то надо проверять, существует ли нужный нам файл, какие файлы существуют в директории и т.д. А то сунемся файл открывать, а его и нету. Тогда возникнет ошибка. Для этого есть очень простая, но крайне нужная функция Dir.

Функция DIR подробно.

Синтаксис ее такой:
Dir (Полный путь, атрибут)

Ну полный путь — это понятно, типа "c:\windows\system\хрень.dll". А атрибуты его это константы и могут принимать такие значения

Русские Блоги

Введение в программирование на C #, применение элементов управления C # (textBox, checkBox, listBox, listView и т. Д.)

Откройте Visual Stdio для программирования

1. Применение элемента управления textBox:

Напишите код для окна входа в систему:

2. Применение элемента управления checkBox (флажок), дополните код этой картинки

Добавьте код в отображаемую кнопку личного хобби:

private void button1_Click(object sender, EventArgs e)

else

>

3. Приложение элемента управления listView, вытащите элемент управления listView, установите свойства:

Атрибут представления — DeTails

Открытые столбцы для добавления элементов данных в элемент управления listView

Результаты следующие: добавьте обработчики событий для кнопок добавления и удаления соответственно.

Textbox c и listbox в чем разница

3. Приложение элемента управления listView, вытащите элемент управления listView, установите свойства:

Атрибут представления — DeTails

Открытые столбцы для добавления элементов данных в элемент управления listView

Результаты следующие: добавьте обработчики событий для кнопок добавления и удаления соответственно.

Thread: ListBox vs TextBox question

New Member Join Date May 2009 Posts 2

ListBox vs TextBox question

I’m currently pulling in records from a text file into a textbox control (see code below). I want to get more control over this by adding multiple columns and want the ability to select 1 line or multi-line and "delete selected". I believe this should then be a listbox but can’t figure out how to convert my code to work with a list box. Any suggestions/ideas out there?

  • View Profile
  • View Forum Posts

PowerPoster Join Date Nov 2008 Location UK Posts 3,327

Re: ListBox vs TextBox question

  • View Profile
  • View Forum Posts
  • Visit Homepage

Super Moderator Join Date May 2005 Location Sydney, Australia Posts 109,467

Re: ListBox vs TextBox question

  • View Profile
  • View Forum Posts

New Member Join Date May 2009 Posts 2

Re: ListBox vs TextBox question

It says a listview is used to display a list of icons and It looks like almost horizontal columns. I want to list like a spreadsheet with a number in the first column (auto generated) and then a list of domain names (with extension) that I input in from file and then maybe the same list in the next column (without extensions). How will the listview accommodate this?

  • View Profile
  • View Forum Posts
  • Visit Homepage

Super Moderator Join Date May 2005 Location Sydney, Australia Posts 109,467

Re: ListBox vs TextBox question

  • Site Areas
  • Forums
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
    is On are On code is On code is On
  • HTML code is Off

Click Here to Expand Forum to Full Width

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.

Список цифр в textBox или listBox

Пишу небольшую прогу. Смысл ее такой: есть textBox, в который я вствляю в столбик цифры: целые и с плавающей точкой. И нужно посчитать их сумму. Перебираю цифры с помощью for. Все бы ничего, но я так и не смог реализовать это. Какие-то цифры космические выбивал. В итоге пришлось это делать через listBox. Все получилось. Но тут есть неудобность: добавить в listBox цифры вручную, насколько я понял, нельзя.

Подскажите пожалуста, как такое же на textBox сделать. И правильно ли будет?

textbox и listbox в с#. Помогите разобраться со взаимодействием

Есть 2 текстбокса и 1 листбокс.
в листбоксе содержатся названия 3 статей.
Как реализовать, чтобы при выборе статьи в листбоксе в первом текстбоксе менялся автор на соотв. , а во вором текстбоксе выводилось содержимое выбранной статьи?
статьи со всем содержимым обьявлены отдельным классом.
public class Article

namespace lab5

private void Form1_Load(object sender, EventArgs e)

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

private void textBox1_TextChanged(object sender, EventArgs e)

private void textBox2_TextChanged(object sender, EventArgs e)

>
>

namespace lab5

private void Form1_Load(object sender, EventArgs e)

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

private void textBox1_TextChanged(object sender, EventArgs e)

private void textBox2_TextChanged(object sender, EventArgs e)

>
>

У тебя уже есть событие «listBox1_SelectedIndexChanged», вот и используй его.

class Article
public string autor;
public string title;
public string contents;
>

Русские Блоги

Введение в программирование на C #, применение элементов управления C # (textBox, checkBox, listBox, listView и т. Д.)

Откройте Visual Stdio для программирования

1. Применение элемента управления textBox:

Напишите код для окна входа в систему:

2. Применение элемента управления checkBox (флажок), дополните код этой картинки

Добавьте код в отображаемую кнопку личного хобби:

private void button1_Click(object sender, EventArgs e)
<
// Добавляем код в событие показа личной кнопки хобби
if (textBox1.Text == "")
<
MessageBox.Show (это, «Пожалуйста, введите свое имя», «Сообщение», MessageBoxButtons.OK, MessageBoxIcon.Information);
>
else
<

if (checkBox1.Checked == true && checkBox2.Checked == true)
textBox2.Text = textBox1.Text + «Нравится» + checkBox1.Text + »и« + checkBox2.Text;
else if (checkBox1.Checked == true && checkBox2.Checked == false)
textBox2.Text = textBox1.Text + «Нравится» + checkBox1.Text;
else if (checkBox1.Checked == false && checkBox2.Checked == true)
textBox2.Text = textBox1.Text + «Нравится» + checkBox2.Text;
else if (checkBox1.Checked == false && checkBox2.Checked == false)
textBox2.Text = "";
>
>

3. Приложение элемента управления listView, вытащите элемент управления listView, установите свойства:

Атрибут представления — DeTails

Открытые столбцы для добавления элементов данных в элемент управления listView

Результаты следующие: добавьте обработчики событий для кнопок добавления и удаления соответственно.

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

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