Dev GridView RowCellClick事件與MouseDown事件

衣舞晨風發表於2015-03-13

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

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事件
            }
        }

小注:

不管這一列OptionsColumn.AllowEdit是不是false,只要這一列有MouseDown事件,就不會執行該列的RowCellClick事件。

相關文章