Программирование >>  Автоматически обновляемые приложения 

1 ... 48 49 50 [ 51 ] 52 53 54 ... 170


private void lstColor DrawItem(object sender. DrawltemEventArgs e) {

if ((e.State & DrawItemState.Selected) ! 0)

e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds) ,

else

e.Graphics.FillRectangle(Brushes.White, e.Bounds);

string itemText = IstColor.Items[e.Index].ToString(); Color color = Color.FromName(itemText) ;

Рисуем строку

е.Graphics.Drawstring(itemText, Font, new SolidBrush(color),

e.Bounds);

Pen pen = new Pen(color);

Рисуем линию под строкой

е.Graphics.DrawLine(pen, е.Bounds.X, e.Bounds.Bottom - 1, e.Bounds.Right, e.Bounds.Bottom - 1);

Примечание

Примеры работы с ListBox нзходятся В пзпке ListBoxDemo на прилагаемом диске.

Листинг 6.13. Вывод цветного списка

private void Forml Load(object sender, EventArgs e) {

listBoxl.Items.Add( One ); listBoxl.Items.Add( Two ); listBoxl.Items.Add( Three );

IstColor.Items.Add(Color.Red.Name); IstColor.Items.Add(Color.Yellow.Name); IstColor.Items.Add(Color.Green.Name); IstColor.Items.Add(Color.Blue.Name);



Листинг 6.14, Подгонка ширины комбинированного окна под самый длинный текст

private void button2 Click(object sender, EventArgs e) {

Graphics g = coraboBoxl.CreateGraphics(); float maxWidth = Of;

foreach (object о in coraboBoxl.Items) {

float w = g.Measurestring(o.ToString0, coraboBoxl.Font).Width; if (w > maxWidth) maxWidth = w;

g.Dispose ();

28 - учитываем ширину кнопки в поле со списком coraboBoxl.Width = (int)maxWidth +28;

Поддержка автозавершения

Обратите внимание на новинку .NET Framework 2.0, относящуюся к полю со списком: теперь СотЬоВох поддерживает автозавершение. Для реализации этой функциональности вам надо задействовать три свойства. Первое - установите стиль автозавершения в свойстве AutoCompieteMode, которое может принимать одно из следующих значений:

□ None - автозавершение отключено (по умолчанию);

□ Suggest - используются значения из раскрывающегося списка; П Append - значения дополняются при вводе;

□ SuggestAppend - КОмбинацИЯ Suggest И Append.

Поле со списком {СотЬоВох)

Подгоняем ширину поля со списком под самый длинный текст

Мы уже рассматривали пример подгонки ширины списка ListBox под самый длинный текст элемента. Такую же технику (листинг 6.14) можно применять и для поля со списком.



Если вы выбрали любое значение, отличное от None, то в свойстве AutoCompieteSource нужно указать ИМЯ системного источника данных для автозавершения. Здесь допустимы следующие значения:

П Fiiesystem- пользователю предлагаются файлы и папки текущей системы, например, если вы наберете c:\wi, то будет предложено c:\windows;

П HistoryList- пользователю предлагается выбрать из системного списка истории посещений адрес Uniform Resource Locators (URL);

П RecentiyUserList- пользователю предлагаются на выбор адреса из списка недавно использованных. Это не обязательно должен быть адрес веб-страницы, могут использоваться, например, команды, вводимые в диалоговом окне Выполнить;

П AllUrl- объединение предыдущих двух свойств HistoryList и RecentiyUserList;

□ AllSystemSources - ВСе варианты из AllUrl И FileSystem;

□ CustomSource- собственный набор вариантов, определяемый разработчиком;

П None - ввод осуществляется пользователем вручную;

П Listitems - выбирается один из вариантов, перечисленных в коллекции

СотЬоВох.Obj ectCollection.

Если вы выберете значение CustomSource, то сотЬоВох ожидает данные для автозавершения в виде набора элементов, указанных в свойстве Autocompietecustomsource. Обратитесь к документации за более подробной информацией по данному вопросу. Кстати, текстовые поля также поддерживают автозавершение.

Как раскрыть поле

со списком программным способом?

Как ни странно, решается эта задача удивительно просто: достаточно установить в значение true свойство ComboBox.DroppedDown: comboBoxl.DroppedDown = true;



1 ... 48 49 50 [ 51 ] 52 53 54 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика