Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Собственная прорисовка списка автозаполнения, ComboBox 
:(
    Опции темы
transparent
Дата 29.6.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



C помощью этого кода я рисую на комбобоксе итемчики..
Код

  Private Sub ComboBoxFontView_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBoxFontView.DrawItem
        Dim sizef_ As New SizeF, pointf_ As New PointF

        With ComboBoxFontView

            Dim MyFont As New Font(.Items(e.Index).ToString, e.Font.Size) ' присваиваем шрифт из коллекции
            sizef_ = e.Graphics.MeasureString(.Items(e.Index), e.Font) 'e.Font)
             pointf_ = sizef_.ToPointF ') 

            e.DrawBackground()
            Try
                If e.Index <> -1 Then
                    ' Отрисовываем()
                    If e.State = DrawItemState.Selected Then
                        e.Graphics.DrawString(.Items(e.Index).ToString, e.Font, New SolidBrush(Color.Yellow), e.Bounds.X, e.Bounds.Y)
                        e.Graphics.DrawString(.Items(e.Index).ToString, MyFont, New SolidBrush(Color.Yellow), e.Bounds.X + pointf_.X + 5, e.Bounds.Y)
                    Else
                        e.Graphics.DrawString(.Items(e.Index).ToString, e.Font, New SolidBrush(Color.White), e.Bounds.X, e.Bounds.Y)
                        e.Graphics.DrawString(.Items(e.Index).ToString, MyFont, New SolidBrush(Color.Cyan), e.Bounds.X + pointf_.X + 5, e.Bounds.Y)
                    End If
                End If
                'Рисуем прямоугльничек...
                'e.Graphics.DrawRectangle(New Pen(Color.SpringGreen, 1), New Rectangle(e.Bounds.X - 1, e.Bounds.Y - 1, e.Bounds.Width + 1, sizef_.Height + 2))
                'e.DrawFocusRectangle() 'если ropDownStyle дропдовн то не будет видно, а если с лист и убрать DrawBackgraund то будет
            Catch ej As System.InvalidCastException
            Catch ex As Exception
            End Try
        End With
    End Sub


У комбобокса есть несколько свойств для того чтобы - когда набераешь первую букву в текстовом отделе(комбика) - то если есть такой итемчик(на эту букву) - то все итемы ниспадают внизу (что то вроде подсказывальщика)
Там есть свойство AutoCpmpleteSource - где можно указать - "будет в подсказах твои заранее введенные в сорс данные", либо можно указать чтобы данные(подсказки) были все те что стоят в комбобоксе(все итемы кароче)


Так вот вопрос:
Хотелось бы чтобы не только рисовалось когда выбираешь мышкой (а конкретно щелкаешь по комбику и лазиешь по списку) - но еще и тогда когда вписываешь первую букву - и происходит автоподсказка....Чтобы когда список выползал с подсказками - там точно так же рисовалось все то что я рисовал в коде выше...


Чтобы было понятно что именно у меня отображается в комбике то вот еще кодик

Код

 ' Загрузка формы
    Private Sub Form1_Load() Handles MyBase.Load

        '* Подготовка ComboBoxFontView
        With ComboBoxFontView
            ' Получаем список шрифтов в ComboBox
            For Each f As FontFamily In FontFamily.Families
                If Not f.IsStyleAvailable(FontStyle.Regular) Then Continue For
                .Items.Add(f.Name)
            Next
            'Выбираем первый шрифт
            .Text = .GetItemText(.Items(0)) '.SelectedIndex = 0
            .BackColor = Color.Black : .ForeColor = Color.White
            'Указываем, что элементы списка мы будем рисовать сами 
            .DrawMode = DrawMode.OwnerDrawVariable
            .DropDownStyle = ComboBoxStyle.DropDown 'от этого зависит как прорисовыется выделенные
            Me.Text = .Items.Count
            .MaxDropDownItems = 20
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.ListItems
        End With

PM MAIL   Вверх
diadiavova
Дата 29.6.2011, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Модератор: Название темы должно отражать ее суть! Это подразумевает, что оно должно быть понятным. Избегай сленга, особенно если он не является общеупотребительным.


Это сообщение отредактировал(а) diadiavova - 4.7.2011, 13:32


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
transparent
Дата 29.6.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



я извиняюсь! Сложно было по другому объявить топик
PM MAIL   Вверх
transparent
Дата 30.6.2011, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



ребят, ну небось скопировали кому нужно было, а подумать над моим вопросом и не удосужились, хотя бы идеи..
PM MAIL   Вверх
krewin
Дата 30.6.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



Блин зачем изобретать велосипед если есть FontDialog
PM MAIL   Вверх
transparent
Дата 1.7.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



это сейчас не важно...А важно сделать красивое автозаполнение....Может я не так описал того чего я хочу? Может не понятно что за автозаполнение я имею ввиду
PM MAIL   Вверх
krewin
Дата 1.7.2011, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



нет, не понятно, опиши на пальцах
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.