Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 4
.NET 3.x

Не открывается список DataGridViewComboBoxCell в DataGridView

29.04.2012, 12:31. Показов 2228. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в следующем.
Мне необходимо импортировать данные с Excel. Но исходный файл *.xls строго не регламентированный.
В файле хранится несколько статических выборок параметров детали, которые динамически будут подгружаться с разных листов Excel, а пользователь через ComboBox может указать какие колонки к какой статической выборке относятся или их вообще не использовать. ComboBox должен быть встроенный в таблицу, по типу фильтров в Excel.

Вот что у меня получилось:
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
54
55
56
57
58
59
60
61
excelapp = new Excel.Application();
                        excelapp.Visible = true;
                        excelappworkbooks = excelapp.Workbooks;
                        //Открываем книгу и получаем на нее ссылку
                        excelappworkbook = excelapp.Workbooks.Open(@"C:\a1.xls",
                         Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                         Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                         Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                         Type.Missing, Type.Missing);
                        excelsheets = excelappworkbook.Worksheets;
                        //Получаем ссылку на лист 1
                        excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
 
                        //Выбираем ячейку для вывода A1
                        excelcells = excelworksheet.get_Range("A1", Type.Missing);
                        //выбираем крайнюю ячейку со сзначениями
                        excelcells = excelcells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell);
                        
                        //создание массива ячеек для первой строки
                        DataGridViewComboBoxCell[] cell = new DataGridViewComboBoxCell[excelcells.Column];                       
 
                        //создаем строку для комбобоксов
                        DataGridViewRow row = new DataGridViewRow();
 
                        //создание ячеек для первой строки  
                        for (int r = 0; r < excelcells.Column; r++)
                        {
                            cell[r] = new DataGridViewComboBoxCell();
                            //Заполнение ComboBox
                            cell[r].Items.AddRange(new string[] { "Нет", "Разностенность по прошивке", "Разностенность по формовке", "Ширина" });
                            //По умолчанию первый елемент
                            cell[r].Value = cell[r].Items[0];
                            //Отбражение елементов ComboBox при активации ячейки DataGrid
                            cell[r].DisplayStyleForCurrentCellOnly = true;
                            //добавляем ячейку DataGridViewComboBoxCell в строку
                            row.Cells.AddRange(cell[r]);
                        }
 
                        //Активация dataGridView
                        dataGridView1.RowCount = 1;
                        dataGridView1.ColumnCount = excelcells.Column;
                        
                        //добавление первой строки с комбобоксами
                        this.dataGridView1.Rows.Add(row);
 
                        //добавляем дополнительные строки
                        dataGridView1.RowCount+= excelcells.Row;
 
                        //заполняем с Excel
                        for (int c = 1; c <= excelcells.Column; c++)
                        {
                            dataGridView1.Columns[c - 1].SortMode = DataGridViewColumnSortMode.NotSortable;
                            dataGridView1.Columns[c - 1].Tag = 1;
                            dataGridView1.Columns[c - 1].Name = c.ToString();
                            for (int r = 1; r <= excelcells.Row; r++)
                            {
                                dataGridView1.Rows[r].Tag = 1;
                                //Вывод в ячейки используя номер строки и столбца Cells[строка, столбец]                              
                                dataGridView1[c - 1, r].Value = ((Excel.Range)excelworksheet.Cells[r, c]).Value2;
                            }
                        }
Проблема в том что DataGridViewComboBoxCell создаются и отображаются нормально, но не выпадает список при клике по нем. Как его заставить выбрасывать список?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2012, 12:31
Ответы с готовыми решениями:

Событие для dataGridView и ячейки типа DataGridViewComboBoxCell
Добрый день! Есть dataGridView с двумя ячейками: DataGridViewComboBoxCell и DataGridViewTextBoxCell. Подскажите событие, которое...

Исключение в DataGridView: System.ArgumentsException: Недопустимое значение DataGridViewComboBoxCell
Всем добрый день! Прошу совета. Код индусский, сильно не пинать, но конструктивную помощь приветствую. Имеется DataGridView, данные...

DataGridViewComboBoxCell как программно раскрыть список
Задача такая, есть dgv у которого несколько столбцов - DataGridViewComboBoxCell Как программно раскрыть список (перевести ячейку в...

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

DataGridViewComboBoxCell всплывающий список
В бд есть таблица users и в ней поле role принимающее только два значения - 0 или 1. В программе вывожу в таблицу и нужно чтобы поле...

Excel файл не полностью открывается в DataGridview
Здравствуйте, Excel файл после загрузки в DGV не полностью открывается - т.е. открываются где-то 30 строк. Помогите пожалуйста решить...

DataGridViewComboBoxCell
Создал DataGridView и в него добавил ячейку типа DataGridViewComboBoxCell После чего DataGridViewComboBoxCell cell = new...

Заполнение DataGridViewComboBoxCell
Добрый день! Подскажите, пожалуйста, как осуществить заполнение DataGridViewComboBoxCell в след. случае: имеется DataGridView, три...

неодин браузер не открывается,скайп не открывается, фильмы не показываются,не один антивирус не открывается и не устанавливается
здравствуйте ,ребята помогите,такая ситуация,я на ноутбуке хотел скачать какой то торрент...скачал..)) неодин браузер не...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка 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/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru