GridView處於可編輯狀態,左鍵點擊默認為“進入編輯”。
將GridView的OptionsColumn.AllowEdit設置為false后左鍵可觸發RowCellClick。
但有時候,既希望GridView可以進行編譯,又希望可以觸發【單元格的點擊事件】,比如有需求要求在某列單元格上單擊可以彈出窗體,選擇數據並返回到GridView上,並且允許手動在GridView上修改或者輸入,那應該怎么處理呢?
用GridView的MouseDown事件,具體代碼如下:
private void gViewActPara_MouseDown(object sender, MouseEventArgs e) { GridHitInfo hint = gViewActPara.CalcHitInfo(e.X, e.Y); if (gViewActPara.RowCount == 0 || /*記錄數大於0*/ !hint.InRowCell /*有效的單元格*/|| e.Button != MouseButtons.Left /*鼠標左鍵*/|| e.Clicks != 1 /*單擊*/ ) { return; } if (hint.Column.FieldName == "需要彈出窗體的列名及該列的FieldName") { //強轉當前行(避免鼠標點擊的行與焦點行FocusedRowHandle不一致,鼠標點擊時,焦點行FocusedRowHandle還未轉換) gViewActPara.FocusedRowHandle = hint.RowHandle; //打開窗體的代碼及處理略 //如果獲取到打開窗體的值之后,需要更新到GridView上使用 // gViewActPara.SetRowCellValue(hint.RowHandle, "需要接受值列的FieldName",從窗體獲取到的值); //使用SetRowCellValue會觸發gViewActPara_CellValueChanged事件 } }