Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 08.02.2012
Сообщений: 15
1

Спрятать ComboBox в ячейке DataGridView после выбора в нем значения

27.10.2012, 22:26. Показов 1611. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такая.
При нажатии на ячейку таблицы в ней появляется ComboBox с данными. После выбора значения ComboBox пропадает а данные остаются в ячейке.
У меня не очень получается создавать новые контролы, поэтому я пошел таким путем.
Кидаю на форму таблицу.

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
Private btn As New ComboBox 'создаем контрол
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'добавляем событие
        AddHandler btn.TextChanged, AddressOf btn_TextChanged
        'устанавливаем ширину контрола по ширине ячейки
        btn.Width = DataGridView1.Columns(0).Width
        'добавляем данные в контрол
        Dim st() As String = {"MMMM", "HHHHH", "BBBBB", "ТРОЛЯ"}
        btn.Items.AddRange(st)
        
        For i As Integer = 0 To 5
            DataGridView1.Rows.Add()
        Next
        
    End Sub
 
    Private Sub btn_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        For i As Integer = 0 To DataGridView1.RowCount - 1
            If DataGridView1(1, i).Selected = True Then
                'добавляем в ячейку значение контрола
                DataGridView1(1, i).Value = btn.Text
                'удаляем контрол
                DataGridView1.Controls.Clear()
                DataGridView1.Refresh()
            End If
        Next
 
    End Sub
 
    Private Sub DataGridView1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseClick
        For i As Integer = 0 To DataGridView1.RowCount - 1
            If DataGridView1(1, i).Selected = True Then
                'добавляем контрол в ячейку таблицы
                DataGridView1.Controls.Add(btn)
                'делаем контрол по размеру ячейки
                btn.Location = DataGridView1.GetCellDisplayRectangle(1, i, False).Location
                'btn.Text = DataGridView1(1, i).Value
            End If
        Next
        If DataGridView1.CurrentCell.ColumnIndex <> 1 Then DataGridView1.Controls.Clear() : btn.Text = ""
       
    End Sub
Корявенько, но работает.
НО!
При переходе на следующую ячейку, при появлении ComboBox-а, появляются предыдущие данные.
Если сделать btn.Text = "", тогда вообще пропадает.
Как сделать более грамотно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2012, 22:26
Ответы с готовыми решениями:

Несколько Combobox-ов. После выбора значения в одном Combobox-е, оно должно стать недоступным в других
Доброго времени суток. У меня такая проблемка. Имеется 3 combobox'a ,содержащие названия городов,...

Сделать чтобы после выбора значения в ComboBox, колесико мышки скролило форму, а не значения контролла
Есть форма с кучей элементов. Когда делаем выбор, на пример в Комбобоксе, при прокручивании...

Выполнить процедуру после выбора значения combobox
Добрый день. Нужно запустить процедуру с параметром после выбора пункта выпадающего списка - help....

Как можно реализовать чтобы после выбора значения combobox оно скрывалось из него?
Как можно реализовать чтобы после выбора значения combobox оно скрывалось из него?:umnik:

3
55 / 55 / 5
Регистрация: 17.09.2012
Сообщений: 128
28.10.2012, 10:22 2
а что мешает использовать DataGridViewComboBoxColumn?
0
3 / 3 / 0
Регистрация: 08.02.2012
Сообщений: 15
28.10.2012, 17:21  [ТС] 3
Я немного неправильно сформулировал задачу. В ячейку будет вставляться из контекстного меню либо Combo, либо DateTimePicker, либо просто текст.
0
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 2
29.01.2013, 13:32 4
Для ввода даты в ячейку с помощью DateTimePicker.
Вложения
Тип файла: rar CalendarColumn.rar (5.6 Кб, 41 просмотров)
0
29.01.2013, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2013, 13:32
Помогаю со студенческими работами здесь

Combobox в ячейке DataGridView
Добрый день. Помогите разобраться с таким вопросом пожалуйста: На форме имеется дгв, которая...

Реализация ComboBox в ячейке DataGridView с элементами CheckBox и RadioButton
Добрый день. Помогите, пожалуйста, разобраться в решении следующей задачи. Таблица DataGridView...

DataGridView, программно сделать что б в ячейке был ComboBox
Всем привет. Возник такой вопрос как сделать программно что б при отображении таблицы бд в...

Значения в ячейке в зависимости от выбора из списка
Всем привет! Задача у меня такая: Есть файл с реквизитами различных компаний (Название, ИНН, КПП,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru