Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-8 / 1 / 1
Регистрация: 27.04.2016
Сообщений: 49

В DataGridView вставить ComboBox при клике по ячейке

22.11.2018, 10:59. Показов 1772. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Давно не писал. Вот встала очередная задача.
Нужно загрузить DataGridView с данными, при клике по ячейке показывать ComboBox с возможностью выбора из списка и присвоение выбранного значения ячейке DataGridView . При клике по другой ячейке ComboBox исчезает.
Вот код заполнения ComboBox
C#
1
2
3
4
                        DataGridViewComboBoxCell dcombo = new DataGridViewComboBoxCell();
 
                        dcombo.Items.Add("0");
                        dcombo.Items.Add("1");
Далее пока не могу понять куда копать. Как dcombo показать в ячейке?

Добавлено через 34 минуты
реализовал. Код
C#
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
        private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView2.Tag == null)
                dataGridView2.Tag = "";
            if (dataGridView2.Tag.ToString() != dataGridView2.CurrentCell.ColumnIndex.ToString() &&
                (dataGridView2.Tag.ToString() == "5" || dataGridView2.Tag.ToString() == "6"))
            {
 
                if (dataGridView2.Tag.ToString() != "")
                {
               //возвращаем ячейке TextBox
                    dataGridView2.Rows[dataGridView2.CurrentRow.Index].Cells[Int32.Parse(dataGridView2.Tag.ToString())] = new DataGridViewTextBoxCell();
                }
            }
                
          if (dataGridView2.CurrentCell.ColumnIndex == 5 || dataGridView2.CurrentCell.ColumnIndex == 6)
            {
                        dataGridView2.Tag = dataGridView2.CurrentCell.ColumnIndex.ToString();//запоминаем ячейку
 
                        DataGridViewComboBoxCell dcombo = new DataGridViewComboBoxCell();//создаём ComboBox
 
                        dcombo.Items.Add("0");//заполняем ComboBox
                        dcombo.Items.Add("1");
                        dataGridView2.Rows[dataGridView2.CurrentRow.Index].Cells[dataGridView2.CurrentCell.ColumnIndex] = dcombo;//показываем в ячейке ComboBox
            }
        }
 
        private void dataGridView2_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
//обработчик ошибок пустой, но д.б. создан
        }
 
        private void dataGridView2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox cb = e.Control as ComboBox;
            if (cb != null)
            {
                // обработчик уже мог записаться при предыдущем вызове этого события, так что удаляем
                cb.SelectionChangeCommitted -= new EventHandler(cb_SelectionChangeCommitted);
                // и наконец записываем
                cb.SelectionChangeCommitted += new EventHandler(cb_SelectionChangeCommitted);
 
                //значение в combobox из ячейки dataGridView
                cb.SelectedIndex = cb.Items.IndexOf(dataGridView2.Rows[dataGridView2.CurrentRow.Index].Cells[dataGridView2.CurrentCell.ColumnIndex].Value.ToString());
            } 
        }
        private void cb_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ComboBox cellComboBox = (ComboBox) dataGridView2.EditingControl;
            //MessageBox.Show(cellComboBox.Text.ToString());
            // выбранное значение ComboBox в колонку dataGridView
            dataGridView2.Rows[dataGridView2.CurrentRow.Index].Cells[dataGridView2.CurrentCell.ColumnIndex].Value = cellComboBox.Text;
        }
в коде при клике по 5 или 6 ячейке появляется ComboBox . После появления ComboBox при клике другой ячейки ComboBox закрывается и выбранное значение в ComboBox присваивается соответствующей ячейке dataGridView
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2018, 10:59
Ответы с готовыми решениями:

Вставить input text при клике по ячейке
Здравствуйте у меня есть такая таблица: <table> <tr> <td>Ячейка 1</td> <td>Ячейка 2</td> ...

При клике по ячейке вставить текст в другую ячейку этой же таблицы
Здравствуйте! У меня есть таблица: <table> <tbody> <tr> <td id="s1"...

При двойном клике в ячейке datagridview перенести полученный e.RowIndex в другую форму
как при двойном нажатии в ячейке datagridview перенести полученный при этом e.RowIndex в другую форму

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2018, 10:59
Помогаю со студенческими работами здесь

Вызвать календарь при клике по ячейке DataGridView и записать в нее выбранную дату
Есть dataGridView/Таблица. Одна из колонок этой таблицы - дата. Задача: Я клацаю на ячейку этого столбца и появляется monthCalendar где...

Написать обработчик событий, чтобы при клике на ячейке таблицы в ячейке появилась картинка.
Здравствуйте,прошу, помогите пожалуйста((( написать обработчик событий, чтобы при клике ячейке таблицы (5x5) в таблице появилась картинка ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru