نوشته شده توسط
safari_m4
سلام دوستان من یک گریدویو که ستون اول آن چک باکس است را بوسیله یک چک باکس دیگر خارج از گریدویو کنترل و تماما فعال و غیرفعال می کنم حالا سوال اینجاست که چگونه وقتی تمام چک باکس های داخل گریدویو فعال می باشند را با غیر فعال کردن تمامی چک باکسهای بصورت دستی چک باکس خارج از گریدویو من هم غیر فعال یا همان تیکش برداشته شود تاکید من بر اینه که وقتی تمام تیک های چک باکس ها بصورت دستی برداشته شد انوقت چک باکس بیرون هم False بشه با تشکر از دوستان
DataGridViewCheckBoxSample.rar
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i = 1 To 10
DataGridView1.Rows.Add(False, i, CType(i, KnownColor))
Next
End Sub
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If CheckBox1.Enabled AndAlso e.ColumnIndex = 0 Then UpdateCheckBox()
End Sub
Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
If CheckBox1.Enabled Then DataGridView1.EndEdit()
End Sub
Private Sub UpdateCheckBox()
Dim checkedFound = False
Dim uncheckedFound = False
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value Then
checkedFound = True
Else
uncheckedFound = True
End If
If checkedFound AndAlso uncheckedFound Then Exit For
Next
CheckBox1.Enabled = False
CheckBox1.CheckState = IIf(checkedFound AndAlso uncheckedFound, CheckState.Indeterminate, checkedFound)
CheckBox1.Enabled = True
End Sub
Private Sub CheckBox1_Click(sender As Object, e As EventArgs) Handles CheckBox1.Click
If CheckBox1.Enabled = False Then Exit Sub
CheckBox1.Enabled = False
CheckBox1.Checked = Not CheckBox1.Checked
DataGridView1.EndEdit
For Each row As DataGridViewRow In DataGridView1.Rows
row.Cells(0).Value = CheckBox1.Checked
Next
CheckBox1.Enabled = True
End Sub
Preview.png