|
Программирование >> Автоматически обновляемые приложения
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;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |