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

Программно создать Datagridview

13.02.2020, 11:38. Показов 1829. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго дня. Подскажите, как программно создать DataGridView на форме.
С размерами в количество строк и столбцов.
То есть в переменную CountRows - я задаю количество строк -4
В переменную CountColumns - количество столбцов - 7
Причем учесть свойство -
VB.NET
1
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
Что бы получилось примерно так как на скринште.
Миниатюры
Программно создать Datagridview  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2020, 11:38
Ответы с готовыми решениями:

Программно создать Panel и в ней Datagridview
Всем привет! Подскажите, как создать программно Panel и в ней создать DatagridView c 3 столбцами и...

Добавление программно строк в DataGridView
Имею на форме picturebox, как кликая по нему добавлять новые строки в datagrid с координатами...

Как программно выделить строку в DataGridView
Как программно выделить строку в DataGridView? Подскажите плиз.

Программно сделать клик по ячейке в Datagridview
Собственно вопрос! Как сделать программно клик по ячейки. Скажем при выборе записи в...

10
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
13.02.2020, 11:39  [ТС] 2
Причем при добовление столбцов и строк по кнопкам - Datagridview растягивалась, вниз и вправо
0
Лень — мое второе и
3222 / 2411 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
13.02.2020, 12:00 3
Лучший ответ Сообщение было отмечено adb420 как решение

Решение

adb420,
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
 Dim DGV As New DataGridView With {
             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells,
             .AllowUserToAddRows = False,
             .RowHeadersVisible = False,
             .Location = New Point(50, 50),
             .Name = "DGV1"}
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim CountRows As Integer = 4
        Dim CountColumns As Integer = 7
 
        For i = 1 To CountColumns
            DGV.Columns.Add("Column" & i, "Column" & i)
        Next
        For i = 1 To CountRows
            DGV.Rows.Add()
        Next
        Me.Controls.Add(DGV)
        DGV.Size = New Drawing.Size(DGV.Columns.Count * DGV.Columns(0).Width + 20, (DGV.Rows.Count * DGV.Rows(0).Height) + DGV.ColumnHeadersHeight)
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        DGV.Rows.Add()
        DGV.Size = New Drawing.Size(DGV.Columns.Count * DGV.Columns(0).Width + 20, (DGV.Rows.Count * DGV.Rows(0).Height) + DGV.ColumnHeadersHeight)
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        DGV.Columns.Add("Column" & DGV.Columns.Count + 1, "Column" & DGV.Columns.Count + 1)
        DGV.Size = New Drawing.Size(DGV.Columns.Count * DGV.Columns(0).Width + 20, (DGV.Rows.Count * DGV.Rows(0).Height) + DGV.ColumnHeadersHeight)
    End Sub
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
13.02.2020, 12:19  [ТС] 4
Orlangur1991, единственное, что если убрать
VB.NET
1
ScrollBars = ScrollBars.None,
то остается пустое место:
Миниатюры
Программно создать Datagridview  
0
Лень — мое второе и
3222 / 2411 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
13.02.2020, 12:26 5
adb420, убрать +20 в каждом изменении размера dgv
0
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
13.02.2020, 14:28  [ТС] 6
Orlangur1991, а подскажите пожалуйста. Например у меня будет жестко 7 столбцов.
Будут добавляться только строки (Соответственно DGV будет расти только вниз.
Подскажите, пожалуйста.
Как мне задать имена столбцов, не Column1, 2,3?
А допустим ФИО, Адрес, Телефон??
0
Лень — мое второе и
3222 / 2411 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
13.02.2020, 14:31 7
adb420, вместо этого цикла
VB.NET
1
2
3
 For i = 1 To CountColumns
            DGV.Columns.Add("Column" & i, "Column" & i)
        Next
добавить необходимые столбцы
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
13.02.2020, 15:02  [ТС] 8
Orlangur1991, так и сделал, но почему то после последнего столбца получается пустота, как было, когда убрал скролл
0
Лень — мое второе и
3222 / 2411 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
13.02.2020, 16:16 9
adb420, из-за autosize'а ширина столбцов может разниться в зависимости от его содержимого или текста в заголовке, а следовательно метод, где количество столбцов умножается на ширину первого столбца неверен, необходимо перед заданием размера пройтись по всем столбцам и сложить их ширину
0
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
13.02.2020, 16:24  [ТС] 10
Orlangur1991, подскажите пожалуйста, как сделать кодом?
0
262 / 214 / 53
Регистрация: 01.08.2016
Сообщений: 827
13.02.2020, 17:43 11
подгонка ширины дгв по ширине колонн:
VB.NET
1
2
3
4
5
6
 Dim wth As Integer
        For Each cl As DataGridViewColumn In DataGridView1.Columns
            wth += cl.Width
        Next
        DataGridView1.Width = wth + 44
    End Sub
Добавлено через 2 минуты
Даную процедуру нужно вызывать при любом добавлении текста в дгв, добавлении колоон и т.д

Добавлено через 6 минут
Вернее даже так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Sub Colwidt() ' вызвать при добавлении или удалении колонны в дгв
        Dim wth As Integer
        For Each cl As DataGridViewColumn In DataGridView1.Columns
            wth += cl.Width
        Next
        DataGridView1.Width = wth + 44
    End Sub
 
    Private Sub DataGridView1_ColumnWidthChanged(sender As Object, e As DataGridViewColumnEventArgs) Handles DataGridView1.ColumnWidthChanged
        ' изменение ширины дгв в зависимости от изменения ширины одной из колонн
        Colwidt()
    End Sub
Добавлено через 50 минут
adb420, Если у тебя нет столбца заголовок строк то
VB.NET
1
DataGridView1.Width = wth + 4
0
13.02.2020, 17:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2020, 17:43
Помогаю со студенческими работами здесь

Задать программно ширину столбцов DataGridView
Загружаю данные в DataGridView из Excel. Первые столбцы 0-2 всегда присутствуют им задаю в...

Программно задать ширину колонок DataGridView
Всем привет! Подскажите как программно задать ширину колонок DataGridView?

Как программно выделить последнею строку в DataGridView?
Как программно выделить последнею строку в DataGridView?

Как программно выделить определенную строку DataGridView
Среда Visual Basic STUDIO’2010 Professional Как поставить фокус на ячейку с координатами...


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

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