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

Можно ли вставить CheckBox в заголовок DGV

09.04.2015, 23:21. Показов 1824. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день
можно ли программно вставить CheckBox в заголовок Grida ?
заранее благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2015, 23:21
Ответы с готовыми решениями:

Выделение строк DGV с помощью CheckBox
Привет всем! У меня есть dgv с checkbox-новый столбец, как поставить 1,2,3, 9,11 строка true

Как работать с CheckBox в ячейках DGV
Хочу сделать что бы при нажатия чекбокса в гриде, менялся цвет ячейки. Все значения (true, false) хранятся в базе данных!

Фильтрация данных в DGV в зависимости от установленных CheckBox
Есть форма с несколькими чекбоксами для фильтрации массива данных и грид для отображения инфы. Обработка события построена следующим...

3
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
10.04.2015, 05:23
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

можно, наследуясь от DataGridViewColumnHeaderCell
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
Public Class HeaderCellCheckBox
    Inherits DataGridViewColumnHeaderCell
 
    Private _checkBoxRegion As Rectangle
    Private _checkAll As Boolean
 
    Public ReadOnly Property All As Boolean
        Get
            Return _checkAll
        End Get
    End Property
 
    Protected Overrides Sub Paint(ByVal graphics As Graphics, ByVal clipBounds As Rectangle, ByVal cellBounds As Rectangle, ByVal rowIndex As Integer, ByVal dataGridViewElementState As DataGridViewElementStates, ByVal value As Object, ByVal formattedValue As Object, ByVal errorText As String, ByVal cellStyle As DataGridViewCellStyle, ByVal advancedBorderStyle As DataGridViewAdvancedBorderStyle, ByVal paintParts As DataGridViewPaintParts)
        MyBase.Paint(graphics, clipBounds, cellBounds, rowIndex, dataGridViewElementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts)
        graphics.FillRectangle(New SolidBrush(cellStyle.BackColor), cellBounds)
        'Зона для прорисовки флажка
        _checkBoxRegion = New Rectangle(cellBounds.X + 1, cellBounds.Y + 2, 25, cellBounds.Height - 4)
        'Прорисовка флажка
        ControlPaint.DrawCheckBox(graphics, _checkBoxRegion, CType(IIf(_checkAll, ButtonState.Checked, ButtonState.Normal), ButtonState))
        'Зона для прорисовки текста заголовка
        Dim textRect As New Rectangle(_checkBoxRegion.Right + 1, _checkBoxRegion.Top, cellBounds.Width - _checkBoxRegion.Width, cellBounds.Height)
        'прорисовка текста
        graphics.DrawString(value.ToString(), cellStyle.Font, New SolidBrush(cellStyle.ForeColor), textRect)
    End Sub
 
    Protected Overrides Sub OnMouseClick(ByVal e As DataGridViewCellMouseEventArgs)
        _checkAll = Not _checkAll
        MyBase.OnMouseClick(e)
    End Sub
End Class
использование:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Class Form1
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim col As New DataGridViewTextBoxColumn()
        col.Name = "col1"
        col.HeaderCell = New HeaderCellCheckBox()
 
        DataGridView1.Columns.Add(col)
        For i As Integer = 0 To 100
            DataGridView1.Rows.Add(i.ToString())
        Next
    End Sub
    'Выделяем или снимаем выделение с ячеек в столбце
    Private Sub DataGridView1_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
        If DataGridView1.Columns(e.ColumnIndex).HeaderCell.GetType() = GetType(HeaderCellCheckBox) Then
            For Each row As DataGridViewRow In DataGridView1.Rows
                row.Cells(e.ColumnIndex).Selected = CType(DataGridView1.Columns(e.ColumnIndex).HeaderCell, HeaderCellCheckBox).All
            Next
 
        End If
    End Sub
End Class
Добавлено через 31 секунду
Только я не соображу как отключить сортировку при клике по столбцу
2
3 / 3 / 1
Регистрация: 06.04.2015
Сообщений: 5
10.04.2015, 21:10  [ТС]
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

2ViterAlex,
спасибо! попробую ...
на буржуйском форуме нашел аналогичное решение... если интересно...
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
Public Class DGVcolumnheader
  Inherits Form
  Public Sub New()
    InitializeComponent()
  End Sub
  Private col As DataGridViewCheckBoxColumn
  Private chkBox As CheckBox
  Private Sub DGVcolumnheader_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    col = New DataGridViewCheckBoxColumn()
    col.Name = "Checkbox"
    col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
    Me.DataGridView1.Columns.Add(col)   
    chkBox = New CheckBox()
    Dim rect As Rectangle = Me.DataGridView1.GetCellDisplayRectangle(0, -1, True)
    chkBox.Size = New Size(18, 18)
    chkBox.Location = rect.Location
    AddHandler chkBox.CheckedChanged, AddressOf chkBox_CheckedChanged
    Me.DataGridView1.Controls.Add(chkBox)
  End Sub
  Private Sub chkBox_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
    For i As Integer = 0 To Me.DataGridView1.RowCount - 1
      Me.DataGridView1(0, i).Value = Me.chkBox.Checked
    Next
    Me.DataGridView1.EndEdit()
  End Sub
End Class
3
9 / 9 / 0
Регистрация: 25.04.2013
Сообщений: 53
28.09.2016, 07:25
Немного поправил использование. Если ячейка в столбце с "чеком" активна то, галка не ставилась.
VB.NET
1
2
3
4
5
6
7
8
 Private Sub DGView_NumbersPoint_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) Handles DGView_NumbersPoint.ColumnHeaderMouseClick
        If sender.Columns(e.ColumnIndex).HeaderCell.GetType() = GetType(HeaderCellCheckBox) Then
        sender.CurrentCell = sender.Item(sender.Columns.GetFirstColumn(DataGridViewElementStates.Visible).Index + 1, e.ColumnIndex)
            For Each row As DataGridViewRow In sender.Rows
                row.Cells(e.ColumnIndex).Value = CType(sender.Columns(e.ColumnIndex).HeaderCell, HeaderCellCheckBox).All
            Next
        End If
    End Sub
Активируется ячейка активной строки в соседнем столбце.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2016, 07:25
Помогаю со студенческими работами здесь

Вставить сердечко в заголовок
Ролтон +10 ♥ ( 5.000 руб) Как ввести сердечко , оно (ALT+3 = ♥) даёт ¦ вот эту фигню , а если скопировать то " ? " даёт ....

Вставить картинку в заголовок
Добрый вечер.Подскажите как вставить картинку в правый верхний угол??ну и рядом с ней контакты написать))все это сделать можно через css???...

Вставить столбец в DGV в виде комбобокса с данными другой таблицы внутри
Доброго времени суток. Проблема такова: есть DataGridView, которому нужно вставить столбец в таблицу в виде комбобокса с данными другой...

Как вставить Meta-теги и заголовок
Здравствуйте. Фрилансер делал сайт и видимо чтобы долго не заморачиваться вставил meta-теги и заголовок title прямо в шаблон шапки темы. То...

Вставить дату в заголовок скачиваемого файла
на сайте есть прайс-лист для скачивания. он имеет имя файла price.xls как в название файла вставить текущую дату, чтобы имя файла при...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru