|
Программирование >> Автоматически обновляемые приложения
Список (ListBox) Простейшие операции со списком обычно не вызывают затруднений у программиста - методы items. Add, Items .Remove, Items. RemoveAt, Items . Insert, Items . Clear ГОВОрят сами За себя И ПОЗВОЛЯЮТ ДОбавЛЯТЬ, уда- лять, вставлять и очищать список. Рассмотрим более сложные приемы. Автоматическая прокрутка списка Если вам необходимо автоматически прокручивать список, чтобы всегда видеть последний добавленный элемент, то воспользуйтесь свойством Topindex. Предположим, у вас имеется список, в который вы добавляете новый элемент и хотите, чтобы он был виден на экране. Тогда можно воспользоваться кодом из листинга 6.10. любом месте кода, чтобы выполнились операторы обработчика этого события. Но в .NET Framework этот способ не сработает. Однако решить проблему очень просто. Просто используйте метод кнопки Performciick. buttonl.PerformClick(); Ha форумах некоторыми программистами предлагаются альтернативные варианты решения. Например, можно вызвать Buttonciick с пустыми параметрами: buttonl Click(null, null); Или так: buttonl click(buttonl, EventArgs.Empty); Как создать западающую кнопку? Некоторые даже не подозревают, что элемент CheckBox может выглядеть как западающая кнопка. Убедитесь в этом сами. Поместите на форму элемент CheckBox И установите значение Button в его свойстве Арреагепсе. Также поиграйте со значениями свойства Fiatstyie. Примечание Примеры действий с кнопками находятся в папке ButtonDemo на прилагаемом диске. {Листинг 6.11. Подгонка ширины списка под самый длинный текст Подгоняем ширину списка под самый длинный текст Graphics g = listBoxl.CreateGraphics(); float maxWidth = Of; float height = Of; for (int i = 0; i < listBoxl.Items.Count; ++i) { float w = g.MeasureString(listBoxl.Items[i].ToString0, listBoxl.Font).Width; if (w > maxWidth) maxWidth = w; height += listBoxl.GetltemHeight(i) ; g.Dispose(); listBoxl.Width = (int)(maxWidth + 8 + ((height > listBoxl.Height - 4) ? 16 : 0)); 16 - ширина прокрутки Как заполнить список именами файлов, перетаскиваемых из Проводника? Операция DragnDrop очень хорошо реализована в .NET Framework. Если вы хотите заполнить список именами файлов, перетаскиваемых прямо из Про- 1 Листинг бИО. Автоматическая прокрутка,списка private void buttonl Click(object sender, EventArgs e) { listBoxl.Items.Add(textBoxl.Text); listBoxl.Toplndex = listBoxl.Items.Count - 1; Подгоняем ширину списка под самый длинный текст Если необходимо, чтобы самый длинный текст был виден в списке, то нужно вычислить длину этого текста через свойство MeasureString, ПрОЙТИСЬ ПО всем элементам списка и установить новую ширину списка, используя полученные результаты. ; Листинг Заполнение списка именами файлов private void listBoxl DragDrop(object sender, DragEventArgs e) { Извлекаем имя перетаскиваемого файла string[] astrings = (string[])e.Data.GetData(DataFormats.FileDrop, true); foreach (string strfile in astrings) { только имя файла listBoxl.Items.Add(strfile.Substring(1 + strfile.Lastlndex0f(@ \ ))); или полный путь к файлу listBoxl.Items.Add(strfile); private void listBoxl DragEnter(object sender, DragEventArgs e) { Разрешаем Drop только файлам е.Effect = е.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.All : DragDropEffects.None; Разделить список цветными линиями и заполнить цветным текстом Если вам не нравится стандартный вид списка, то вы должны самостоятельно заняться отрисовкой этого элемента управления. Сначала присвойте свойству DrawMode значение OwnerDrawFixed. Тем самым ВЫ берете на себя всю работу, связанную с отображением элемента. Далее в событии Drawitem вы пишете код, который будет отвечать за вывод цветного текста и цветных линий при помощи Drawstring И DrawLine, как показано В листинге 6.13. водника, то присвойте сначала свойству AiiowDrop списка ListBox значение true и напишите для событий DragEnter И DragDrop КОД, приведенный В листинге 6.12.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |