自訂儲存格驗證
要求:驗證錯誤後焦點不離開。
實現:儲存格的驗證可以使用dgv_details_CellValidating事件。驗證不通過時調用e.Cancel = true;終止事件鏈,儲存格將保持編輯狀態。調用dgv_details.CancelEdit();可以使儲存格的內容會滾到修改前的值。使用System.Windows.Forms.SendKeys.Send("^a");將全選儲存格的內容。
儲存格選中並開始編輯狀態
實現://DataGridView獲得焦點dgv_details.Focus();//DataGridView指定目前的儲存格dgv_details.CurrentCell = dgv_details[0, 0];//開始編輯狀態dgv_details.BeginEdit(false);
定製自動產生綁定了列
實現:dgv_details.AutoGenerateColumns = false;
設定列的背景色
實現:Color GridReadOnlyColor = Color.LightGoldenrodYellow;dgv_details.Columns[1].DefaultCellStyle.BackColor =WinKeys.GridReadOnlyColor;
DataGridView
儲存格
驗證
的設計的問題
問題一:綁定還是不綁定?綁定的優勢:比較簡單,代碼少。綁定得缺點:DataGridView中的資料受資料來源的影響(主鍵約束、實值型別約束)。不一至時會激發DataError事件,輸入的內容無法儲存到儲存格中和資料來源中。特殊的驗證(比如長度、格式等)還是需要另外寫代碼實現。關於增加行的問題。增加新行時多主鍵的驗證有問題,而且驗證不通過時會將新行全部刪除。限制很多,很不方便。 非綁定的優勢:驗證等處理比較靈活。不受資料來源的約束。非綁定得缺點:顯示和向資料庫更新資料時需要比較多的代碼實現,效率比較低。 總的感覺在處理驗證比較麻煩的場合,我還是比較喜歡非綁定的方式。如果資料量大,驗證比較簡單的場合使用繫結模式比較好