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

ComboBox в DataGridView в каждой колонке в одной строчке

24.09.2022, 21:15. Показов 1524. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как возможно создать ComboBox в DataGridView, только не в одной колонке а в одной строчке?
У таблицы есть свойство колонок ComboBoxColumn , но мне оно не походит так как ComboBox нужно размножить не в одной колонке до низа таблицы, а в одной строчке до правого края таблицы. При этом у всех ComboBox будет одинаковый список и количество колонок у таблицы динамическое.
Думал возможно решить данный вопрос объявлением объекты класса DataGridViewComboBoxCell в цикле, а потом каждой ячейке нужной мне строчки присваивать списки размноженных объектов класса, но не знаю как возможно объявлять объекты в цикле и вообще возможно ли это. Либо может кто подскажет более человечный способ.
Пример кода, как я себе это представляю, но естественно полностью не рабочий и в корне неверный.

C#
1
2
3
4
5
6
7
8
9
10
// for (int i = 1; j < Data.GetLength(1); ++i)
{
DataGridViewComboBoxCell select[i] = new DataGridViewComboBoxCell();
select[i].Items.Add("ААА");
select[i].Items.Add("БББ");
select[i].Items.Add("ЦЦЦ");
select[i].Items.Add("1111");
select[i].Items.Add("");
dataGridView1.Rows[0].Cells[i] = select[i];
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2022, 21:15
Ответы с готовыми решениями:

Разные ComboBox в одной колонке DataGridView?
Здравствуйте. Возможно ли, в зависимости от условия, в разных строках столбца со списками выводить, например: либо {&quot;0&quot;,...

В первом столбике Grid-а в каждой строчке отображать ComboBox
Здраствуйте уважаемые спциалисты делфи вот какая у меня беда наваял я великую прогу в акцесс по учету продукции 6и заводов. Суть...

работа с тектовым файлом. Очень большое кол-во строк. В каждой строке есть 3 числа. Первое чисол нужно изменять в каждой строчке по одной и той же фор
Добрый день. В общем задача такова: Есть Текстовый файл. Содержимое вот такое: 1261342801,60.89,1.4306 1261346402,61.04,1.4312 ...

14
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
24.09.2022, 22:03
Цитата Сообщение от ArtemQV Посмотреть сообщение
а в одной строчке до правого края таблицы
Значит у каждой добавляемой колонки должен быть установлен тип ComboBoxColumn. В чём проблема?
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
24.09.2022, 22:26  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Значит у каждой добавляемой колонки должен быть установлен тип ComboBoxColumn. В чём проблема?
Но тогда комбобокс будет абсолютно во всех строчках в данном типе колонок, а мне нужно что бы только в одной верхней строчке для всех колонок.
Может я не понимаю, можете продемонстрировать кодом?
Мне нужно что то наподобие этого
Миниатюры
ComboBox в DataGridView в каждой колонке в одной строчке  
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
24.09.2022, 22:58
Цитата Сообщение от ArtemQV Посмотреть сообщение
Но тогда комбобокс будет абсолютно во всех строчках в данном типе колонок, а мне нужно что бы только в одной верхней строчке для всех колонок.
Ну вы можете попробовать добавить строку, например, так:
C#
1
2
3
4
5
DataGridViewRow row = new DataGridViewRow();
row.Cells.Add(new DataGridViewComboBoxCell());
row.Cells.Add(new DataGridViewComboBoxCell());
// ...
dataGridView1.Rows.Add(row);
А дальше добавлять строки уже как обычно. Но тут могут быть нюансы.
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
24.09.2022, 23:15  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Ну вы можете попробовать добавить строку, например, так:
Дело в том что вся таблица является динамической как по строчкам как по столбцам, соответсвенно мне нужно сначала, я так полагаю, создать таблицу в одну строчку и задданным количесвом колонок, затем циклом пройтись по колонкам и изменить тип на ComboBoxColumn. А потом следующим циклом добавить нужное мне количесво строк. И теперь вопрос, как эти циклы прописать в коде, у меня выдает ошибку
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
24.09.2022, 23:20
Цитата Сообщение от ArtemQV Посмотреть сообщение
я так полагаю, создать таблицу в одну строчку и задданным количесвом колонок, затем циклом пройтись по колонкам и изменить тип на ComboBoxColumn
Тип уже добавленных ячеек вы не измените. Можно только добавить ряд с заранее добавленными в него ячейками нужного типа.

Цитата Сообщение от ArtemQV Посмотреть сообщение
И теперь вопрос, как эти циклы прописать в коде, у меня выдает ошибку
Когда пишите про какую-то ошибку, очень желательно привести сам код и текст ошибки.
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
24.09.2022, 23:57  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
привести сам код
Оно вроде бы как работает, но туплю и не понимаю как добавить Item при таком подходе.

C#
1
2
3
4
5
6
7
8
9
10
                DataGridViewRow row = new DataGridViewRow();
                dataGridView1.ColumnCount = Data.GetLength(1);
                for(int i = 0; i < Data.GetLength(1); i++)
                {
                    row.Cells.Add(new DataGridViewComboBoxCell());
                }
 
                dataGridView1.Rows.Add(row);
 
                dataGridView1.RowCount = Data.GetLength(0);
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
25.09.2022, 00:06
Цитата Сообщение от ArtemQV Посмотреть сообщение
Оно вроде бы как работает, но туплю и не понимаю как добавить Item при таком подходе.
Создать сначала ячейку, заполнить Items, а потом уже добавить её в ряд:
C#
1
2
3
4
5
var cell = new DataGridViewComboBoxCell();
cell.Items.AddRange("1", "2", "3");
 
var row = new DataGridViewRow();
row.Cells.Add(cell);
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
25.09.2022, 00:17  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Создать сначала ячейку, заполнить Items, а потом уже добавить её в ряд:
Изначально пробовал именно так в итоге ошибка: "System.InvalidOperationException: Указанная ячейка уже принадлежит к сетке. Выполнение операции невозможно". Работает только в том случае если каждый раз создавать новый экземпляр, но не понимаю как в цикле сразу же назначать Item.
C#
1
2
3
4
5
6
7
8
9
10
11
12
                DataGridViewRow row = new DataGridViewRow();
                var cell = new DataGridViewComboBoxCell();
                cell.Items.AddRange("1", "2", "3");
                dataGridView1.ColumnCount = Data.GetLength(1);
                for(int i = 0; i < Data.GetLength(1); i++)
                {
                    row.Cells.Add(cell);
                }
 
                dataGridView1.Rows.Add(row);
 
                dataGridView1.RowCount = Data.GetLength(0);
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
25.09.2022, 00:20
Лучший ответ Сообщение было отмечено ArtemQV как решение

Решение

Цитата Сообщение от ArtemQV Посмотреть сообщение
Изначально пробовал именно так в итоге ошибка: "System.InvalidOperationException: Указанная ячейка уже принадлежит к сетке.
Ну так надо новую ячейку создавать, а не одну и ту же добавлять несколько раз.
C#
1
2
3
4
5
6
7
8
9
10
                DataGridViewRow row = new DataGridViewRow();
                dataGridView1.ColumnCount = Data.GetLength(1);
                for(int i = 0; i < Data.GetLength(1); i++)
                {
                    var cell = new DataGridViewComboBoxCell();
                    cell.Items.AddRange("1", "2", "3");
                    row.Cells.Add(cell);
                }
 
                dataGridView1.Rows.Add(row);
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
25.09.2022, 00:38  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Ну так надо новую ячейку создавать, а не одну и ту же добавлять несколько раз.
C#
Вон оно как, прошу прощения за мой тупняк, и тогда еще маленький вопрос, если позволите.
А как теперь мне можно создавать комбобоксы не с первой ячейки, а скажем со второй. Думаю что то наподобие этого должно быть...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                DataGridViewRow row = new DataGridViewRow();
                dataGridView1.ColumnCount = Data.GetLength(1);
                int k = 0;
                for (int i = 0; i < Data.GetLength(1); i++)
                {
                    if ( k>=2)
                    { var cell = new DataGridViewComboBoxCell();
                    cell.Items.AddRange("1", "2", "3");
                    row.Cells.Add(cell);
                    }
                    else row.Cells.Add();
                    k++;
                }
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
25.09.2022, 00:41
Цитата Сообщение от ArtemQV Посмотреть сообщение
Думаю что то наподобие этого должно быть...
А чем вам i не угодил в кач-ве счётчика?
C#
1
2
3
4
5
6
7
8
9
                for (int i = 0; i < Data.GetLength(1); i++)
                {
                    if ( i>=2)
                    { var cell = new DataGridViewComboBoxCell();
                    cell.Items.AddRange("1", "2", "3");
                    row.Cells.Add(cell);
                    }
                    else row.Cells.Add();
                }
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
25.09.2022, 00:44  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
А чем вам i не угодил в кач-ве счётчика?
Время ночь, мозги на в кашу, вопрос в том что 8 строчка подсвечивается красным требует аргумент.
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
25.09.2022, 09:35
Цитата Сообщение от ArtemQV Посмотреть сообщение
8 строчка подсвечивается красным требует аргумент
C#
1
row.Cells.Add(new DataGridViewCell());
0
0 / 0 / 0
Регистрация: 15.02.2017
Сообщений: 48
25.09.2022, 14:08  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
1
row.Cells.Add(new DataGridViewCell());
Благодарствую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.09.2022, 14:08
Помогаю со студенческими работами здесь

Ячейки разных типов в одной колонке dataGridView
Существует ли способ совместить в одной колонке dataGridView'a ячейки типов textBoxCell и comboBoxCell?

Ввод только цифр с запятой в одной колонке datagridview
namespace WindowsFormsApplication3 { public partial class Form1 : Form { public struct User {

VB.Net Datagridview нет доступа к данным в одной колонке
Мне надо заполнить Datagridview, данные в котором могут быть отредактированы пользователями. Программка простая: SqlStatement =...

DataGridView. Подсчет всех значений в одной колонке.Вывод в Текст бокс
Всем доброго времени суток. В общем есть главная форма и еще 2 второстепенные. Из второстепенных заполняется 1 БД (Access) с 4...

Найти в каждой четной строчке элемент с наименьшим значением ,а в каждой нечетной строчке элемент с наибольшим
Дана матрица вещественных чисел .Найти в каждой четной строчке элемент с наименьшим значением ,а в каждой нечетной строчке элемент с...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
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:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru