Datagridview是net中最復雜的控件由於人們對表格的格式要求多種多樣所以編寫一個通用的Datagridview(類似JSF中的datatable)非常困難的
Datagridview中用戶可以對行列單元格進行編程如行中可以插入下拉列表復選框編輯框單選框等多種控件每種控件都以DataGridView開頭如單選框類為DataGridViewCheckBoxCell
DataGridViewCheckBoxCell有一些惡心的屬性折磨了我很久下加以詳細說明
FormattedValue屬性
可能大家已經習慣了用checked=true或者checked=false這樣直觀的語句來取得checkbox的值但DataGridViewCheckBoxCell沒有checked屬性而使用了更復雜的FormattedValue
EditedFormattedValue屬性
當 前checkbox的狀態不管它是不是已經是一個“確認值”在我們在印象裡checkbox只有true或false什麼叫“確認值”呢?確認值 是指不管用戶是不是已經離開該單元格(即確認該單元格最終的狀態)都返回checkbox目前的值乍一聽更糊塗了舉個例子加以解釋
() 初始時checkbox未選中用戶點了一下於是checkbox會呈現勾選狀態
這時EditedFormattedValue=true但FormattedValue=false這是因為用戶沒有“確認”這個值這個checkbox仍然處於編輯狀態
() 初始時checkbox選中用戶點了一下於是checkbox會呈現未勾選狀態然後用戶點擊其它單元格
這 時EditedFormattedValue=false但FormattedValue=false這是因為用戶離開這個單元格意味著用戶已經 “確認”這個值這個checkbox不再處於編輯狀態它的EditedFormattedValue==FormattedValue
這 時EditedFormattedValue=false但FormattedValue=false這是因為用戶離開這個單元格意味著用戶已經 “確認”這個值這個checkbox不再處於編輯狀態它的EditedFormattedValue==FormattedValue
復制代碼 代碼如下:
for (int i = ; i < dataGridViewRowsCount; i++)
{
DataGridViewCheckBoxCell chkBoxCell = (DataGridViewCheckBoxCell)dataGridViewRows[i]Cells[Column_IdIndex];
if (chkBoxCell != null && ((bool)chkBoxCellEditingCellFormattedValue == true || (bool)chkBoxCellFormattedValue == true))
{
}
}
From:http://tw.wingwit.com/Article/program/net/201311/14399.html