02-10-12, 02:00 AM
كاتب الموضوع : هشام المصباحي
اضافة CheckBox في Datagridview Header Cellوالفائدة تكمن عندما تقوم بالنقر على ال CheckBox يتم تحديد كل الخلايا في ال Datagridview
انظر الصورة التالية :
درس بسيط نقلته وقمت بالتعديل عليه ليكون سهل ومفهوم للجميع انشاء الله
لتحميل المثال انقر هنا
او افتح مشروع جديد واللصق الكود التالي
كود :
[color=#000000][COLOR=#007700]Public Class [/color][COLOR=#0000bb]Form1
[/COLOR][color=#007700]Private [/color][color=#0000bb]Sub Form1_Load[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles MyBase[/color][color=#007700].[/color][COLOR=#0000bb]Load
[/COLOR][COLOR=#dd0000]'Add Items
dgvSelectAll.Rows.Add()
dgvSelectAll.Rows.Add()
dgvSelectAll.Rows.Add()
dgvSelectAll.Item(1, 0).Value = "Hisham"
dgvSelectAll.Item(1, 1).Value = "Ali"
dgvSelectAll.Item(1, 2).Value = "Ahmed"
AddHeaderCheckBox()
End Sub
Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles dgvSelectAll.CellPainting
If e.RowIndex = -1 AndAlso e.ColumnIndex = 0 Then
ResetHeaderCheckBoxLocation(e.ColumnIndex, e.RowIndex)
End If
End Sub
Private Sub ResetHeaderCheckBoxLocation(ByVal ColumnIndex As Integer, ByVal RowIndex As Integer)
'[/COLOR][COLOR=#0000bb]Get the column header cell bounds
Dim oRectangle [/COLOR][color=#007700]As [/color][color=#0000bb]Rectangle [/color][color=#007700]= [/color][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]dgvSelectAll[/color][color=#007700].[/color][color=#0000bb]GetCellDisplayRectangle[/color][color=#007700]([/color][color=#0000bb]ColumnIndex[/color][color=#007700], [/color][color=#0000bb]RowIndex[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Dim oPoint [/color][color=#007700]As New [/color][color=#0000bb]Point[/color][COLOR=#007700]()
[/COLOR][color=#0000bb]oPoint[/color][color=#007700].[/color][color=#0000bb]X [/color][color=#007700]= [/color][color=#0000bb]oRectangle[/color][color=#007700].[/color][color=#0000bb]Location[/color][color=#007700].[/color][color=#0000bb]X [/color][color=#007700]+ ([/color][color=#0000bb]oRectangle[/color][color=#007700].[/color][color=#0000bb]Width [/color][color=#007700]- [/color][color=#0000bb]HeaderCheckBox[/color][color=#007700].[/color][color=#0000bb]Width[/color][color=#007700]) / [/color][color=#0000bb]2 [/color][color=#007700]+ [/color][COLOR=#0000bb]1
oPoint[/COLOR][color=#007700].[/color][color=#0000bb]Y [/color][color=#007700]= [/color][color=#0000bb]oRectangle[/color][color=#007700].[/color][color=#0000bb]Location[/color][color=#007700].[/color][color=#0000bb]Y [/color][color=#007700]+ ([/color][color=#0000bb]oRectangle[/color][color=#007700].[/color][color=#0000bb]Height [/color][color=#007700]- [/color][color=#0000bb]HeaderCheckBox[/color][color=#007700].[/color][color=#0000bb]Height[/color][color=#007700]) / [/color][color=#0000bb]2 [/color][color=#007700]+ [/color][COLOR=#0000bb]1
[/COLOR][COLOR=#dd0000]'Change the location of the CheckBox to make it stay on the header
HeaderCheckBox.Location = oPoint
End Sub
Private Sub AddHeaderCheckBox()
HeaderCheckBox = New CheckBox()
HeaderCheckBox.Size = New Size(15, 15)
'[/COLOR][COLOR=#0000bb]Add the CheckBox into the DataGridView
Me[/COLOR][color=#007700].[/color][color=#0000bb]dgvSelectAll[/color][color=#007700].[/color][color=#0000bb]Controls[/color][color=#007700].[/color][color=#0000bb]Add[/color][color=#007700]([/color][color=#0000bb]HeaderCheckBox[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]End Sub
[/COLOR][color=#007700]Private [/color][color=#0000bb]Sub HeaderCheckBox_CheckedChanged[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles HeaderCheckBox[/color][color=#007700].[/color][COLOR=#0000bb]CheckedChanged
[/COLOR][color=#007700]For [/color][color=#0000bb]i [/color][color=#007700]= [/color][color=#0000bb]0 To dgvSelectAll[/color][color=#007700].[/color][color=#0000bb]Rows[/color][color=#007700].[/color][color=#0000bb]Count [/color][color=#007700]- [/color][COLOR=#0000bb]2
dgvSelectAll[/COLOR][color=#007700].[/color][color=#0000bb]Item[/color][color=#007700]([/color][color=#0000bb]0[/color][color=#007700], [/color][color=#0000bb]i[/color][color=#007700]).[/color][color=#0000bb]Value [/color][color=#007700]= [/color][color=#0000bb]HeaderCheckBox[/color][color=#007700].[/color][COLOR=#0000bb]Checked
Next
End Sub
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR]