Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613

MultiColumn ComboBox

10.06.2019, 12:02. Показов 1565. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть следующий код:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim dtTest As DataTable = New DataTable()
        dtTest.Columns.Add("ID", GetType(Integer))
        dtTest.Columns.Add("Name", GetType(String))
        dtTest.Columns.Add("Tel", GetType(String)) 'add
 
        dtTest.Rows.Add(1, "Петров К.В", "777-77-77")
        dtTest.Rows.Add(2, "Иванов Д.Н.", "777-77-75")
        dtTest.Rows.Add(3, "Васильев Г.С", "777-77-73")
        dtTest.Rows.Add(4, "Разина Е.М.", "777-77-71")
        dtTest.Rows.Add(5, "Романова И.К.", "777-77-79")
        dtTest.Rows.Add(6, "Кириченко А.А.", "777-77-72")
 
        ' Bind the ComboBox to the DataTable
        Me.comboBox1.DataSource = dtTest
        Me.comboBox1.DisplayMember = "Name"
        Me.comboBox1.ValueMember = "ID"
        Me.ComboBox1.ValueMember = "Tel"
 
        ' Enable the owner draw on the ComboBox.
        Me.comboBox1.DrawMode = DrawMode.OwnerDrawFixed
        ' Handle the DrawItem event to draw the items.
    End Sub
 
    Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox1.DrawItem
        ' Draw the default background
        e.DrawBackground()
 
        ' The ComboBox is bound to a DataTable,
        ' so the items are DataRowView objects.
        Dim drv As DataRowView = CType(ComboBox1.Items(e.Index), DataRowView)
 
        ' Retrieve the value of each column.
        Dim id As Integer = drv("ID").ToString()
        Dim name As String = drv("Name").ToString()
        Dim Tel As String = drv("Tel").ToString()
 
        ' Get the bounds for the first column
        Dim r1 As Rectangle = e.Bounds
        r1.Width = r1.Width / 2
 
        ' Draw the text on the first column
        Using sb As SolidBrush = New SolidBrush(e.ForeColor)
            e.Graphics.DrawString(id, e.Font, sb, r1)
        End Using
 
        ' Draw a line to isolate the columns 
        Using p As Pen = New Pen(Color.Black)
            e.Graphics.DrawLine(p, r1.Right, 0, r1.Right, r1.Bottom)
        End Using
 
        ' Get the bounds for the second column
        Dim r2 As Rectangle = e.Bounds
        r2.X = e.Bounds.Width / 2
        r2.Width = r2.Width / 2
 
        ' Draw the text on the second column
        Using sb As SolidBrush = New SolidBrush(e.ForeColor)
            e.Graphics.DrawString(name, e.Font, sb, r2)
        End Using
 
 
    End Sub
Добавил 3 столбец
VB.NET
1
       dtTest.Columns.Add("Tel", GetType(String)) 'add
Вопрос:
Как прорисовать его в ComboBox1_DrawItem? И как можно задавать ширину столбца?(подвинуть разделитель)
P/s Возможно кто то еще знает как нарисовать шапку данной таблицы?
Заранее спасибо за помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2019, 12:02
Ответы с готовыми решениями:

Значение из ComboBox формы в запросе MS SQL для другого ComboBox
Здравствуйте! Научите пожалуйста использовать значение ComboBox (хотя бы VB) в запросе MS SQL. Значение числовое int. Знаю, что для...

Заполнение ComboBox из БД в зависимости от выбранного значения в другом ComboBox
Т.к. я не профессионал, прошу сразу не закидывать палками )) Проблема следующая, грубо говоря на форме преславутые зависимые ComboBox,...

Кряк к MultiColumn Combobox
Подскажите, где достать это и кряк к нему??? Очень нужно...

6
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,753
Записей в блоге: 1
10.06.2019, 12:38
Может Вам это решение подойдет.
0
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
10.06.2019, 13:13  [ТС]
Uswer, видел это решение.
оно почему то у меня не стартует( сам проект открыться корректно не может)
Поэтому я пытаюсь, сделать что то свое (похожее)
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,753
Записей в блоге: 1
10.06.2019, 13:40
Может проще выпадающий список заменить на ListBox?
0
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
10.06.2019, 14:29  [ТС]
Uswer, интересует именно этот вариант
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,753
Записей в блоге: 1
10.06.2019, 16:07
Вам необходимо создать собственный UserControl на основе ComboBox, в котором выпадающий ListBox заменить на ListView.
В этой теме обсуждался расширенный поиск в combobox. Однако многие вещи по созданию нового контрола можно от туда почерпнуть.
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
10.06.2019, 16:55
Цитата Сообщение от adb420 Посмотреть сообщение
оно почему то у меня не стартует
Цитата Сообщение от adb420 Посмотреть сообщение
интересует именно этот вариант
adb420, возьмите из этого проекта библиотеку MyCustomControls.dll (добавьте ссылку в ваш проект).
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Imports MyCustomControls
Public Class Form1
 
    Dim WithEvents mcc As New MyCustomControls.InheritedCombo.MultiColumnComboBox
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dt As New DataTable
        dt.Columns.Add("col1")
        dt.Columns.Add("col2")
        dt.Columns.Add("col3")
        dt.Rows.Add("111", "222", "333")
        dt.Rows.Add("444", "555", "666")
        dt.Rows.Add("777", "888", "999")
 
        mcc.Table = dt
        mcc.DisplayMember = "col1"
        mcc.ColumnsToDisplay = {"col1", "col2", "col3"}
        Me.Controls.Add(mcc)
    End Sub
End Class
Нюансы уже сам как-нибудь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2019, 16:55
Помогаю со студенческими работами здесь

Содержимое второго ComboBox-а должно зависеть от выбранного элемента в первом ComboBox-е
Здраствуйте!У меня такая задачка. У меня есть 2 компонента CombBox. В первом я выбираю запись. А во втором записи дожны формироваться в...

Не получается передать список элементов combobox одной формы в combobox другой
Есть две формы, на главной есть список комбобокс, на доченей тоже есть комбобокс... что в конструкторе второй формы надо написать, чтобы в...

Combobox в окне с другим фоном. Как убрать белые углы combobox?
Основное окно имеет градиентную заливку фона. Также включены стили windows через манифест. #pragma...

Исключение из ComboBox'а значений выбранных в других ComboBox'ов используя Binding
Возможно ли средствами Binding-a решить такую задачку: есть 5 TextBox - ов, и 3 ComboBox - а. значения всех TextBox - ов заносятся в...

Как можно менять текст в Combobox, используя другой Combobox?
Как можно менять текст, в Combobox используя другой Combobox, т.е. Допустим, есть два Combobox: Combobox1 и Combobox2. В первом будут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru