![](/img/trans.png)
[英]How to keep the checkbox checked in DatagridView Checkbox vb.net
[英]how can i check if checkbox is checked in datagridview column in vb.net
我目前正在創建一個計費系統,無法檢查datagridview
是否已選中復選框。
我的datagridview
當前包含以下列:
0:產品編號
1:說明
2:大小
3:費用
4:數量
5:回來嗎?
(Datagrid不受任何約束)
回報?” column是復選框列。 這樣一來,如果用戶要退回商品,則他們可以選中要退回的每個商品的復選框,然后根據復選框是否選中來執行不同的代碼集。
例如:如果用戶退回一件價值20英鎊的物品並購買一件價值50英鎊的物品,則系統應向用戶顯示50英鎊的總費用。但是,如果用戶同時購買這兩種物品,則系統應輸出英鎊。 70
這將完全取決於天氣,或者是否選中了“返回”復選框。
進行此計算的代碼我沒有問題,我已經編寫了。 但是,它是檢查天氣的代碼,還是未在指定的datagridview列中選中任何復選框。
我假設它類似於用於普通復選框的代碼, If Checkbox1.CheckState = CheckState.Checked then ...
但事實並非如此。
我希望我已經弄清楚了我的情況和問題,希望有人可以提供幫助,謝謝。
這是一個完整的示例,其中在IDE中創建了DataGridViewColumns,因此沒有代碼顯示正在創建它們。
''' <summary>
''' DataGridView columns were created in the IDE
''' </summary>
''' <remarks></remarks>
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.Rows.Add(New Object() {"John", "USA", True})
DataGridView1.Rows.Add(New Object() {"Mike", "AU", False})
DataGridView1.Rows.Add(New Object() {"Jack", "EU", True})
DataGridView1.Rows.Add(New Object() {"Mike", "AU", False})
End Sub
Private Sub DataGridView1SelectAll_CurrentCellDirtyStateChanged(
ByVal sender As Object,
ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
RemoveHandler DataGridView1.CurrentCellDirtyStateChanged,
AddressOf DataGridView1SelectAll_CurrentCellDirtyStateChanged
If TypeOf DataGridView1.CurrentCell Is DataGridViewCheckBoxCell Then
DataGridView1.EndEdit()
Dim Checked As Boolean = CType(DataGridView1.CurrentCell.Value, Boolean)
If Checked Then
MessageBox.Show("You have checked")
Else
MessageBox.Show("You have un-checked")
End If
End If
AddHandler DataGridView1.CurrentCellDirtyStateChanged,
AddressOf DataGridView1SelectAll_CurrentCellDirtyStateChanged
End Sub
End Class
這是一種語言擴展方法,該方法也很有幫助,通過按一下按鈕,您可以獲取所有選中的行。 調整起來很容易,這樣您就可以要求選中或未選中的行。
Module Module1
<System.Diagnostics.DebuggerStepThrough()> _
<Runtime.CompilerServices.Extension()> _
Public Function GetCheckedRows1(
ByVal GridView As DataGridView,
ByVal ColumnName As String) As List(Of DataGridViewRow)
Return _
(
From SubRows In
(
From Rows In GridView.Rows.Cast(Of DataGridViewRow)()
Where Not Rows.IsNewRow
).ToList
Where CBool(SubRows.Cells(ColumnName).Value) = True
).ToList
End Function
End Module
用法
Dim rowsCheckedList As List(Of DataGridViewRow) =
DataGridView1.GetCheckedRows1("ProcessColumn")
另請參閱有關此主題的我的MSDN代碼示例 。 它們是在VS2013中完成的,如果使用較低版本,您仍然可以在線查看代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.