標籤:
在這裡使用GridView的MouseDown事件。這裡同樣使用的是GridHitInfo來擷取點擊位置的資訊,來判斷是否在欄位標題上。GridHitInfo根據滑鼠點擊的x、y座標擷取該點的相關資訊,判斷是否點擊在欄位標題行內。
private void gridView_MouseDown(object sender, MouseEventArgs e) { //滑鼠左鍵點擊 if (e.Button == MouseButtons.Left) { GridHitInfo info = gridView.CalcHitInfo(e.X, e.Y); //在欄位標題欄內且欄位標題name是"colName" if (info.InColumnPanel && info.Column.Name =="colName") { XtraMessageBox.Show("點擊Name欄位標題!"); } } }以上代碼很簡單,但是有個小問題,就是在該列右邊線拖動這一列的列寬時,也會彈出對話方塊,因為這裡拖動列寬也被視為點擊滑鼠。這顯然不合適。解決這個問題的辦法也很簡單,就是判斷滑鼠點擊位置不在右邊線向左移動一點距離(3像素)範圍內。下面對以上代碼稍加修改,就不會再有這個問題了。private void gridView_MouseDown(object sender, MouseEventArgs e) { //滑鼠左鍵點擊 if (e.Button == MouseButtons.Left) { GridHitInfo gridHitInfo = gridView.CalcHitInfo(e.X, e.Y); //在欄位標題欄內且欄位標題name是"colName" if (gridHitInfo.InColumnPanel && gridHitInfo.Column.Name =="colName") { //擷取該列右邊線的x座標 GridViewInfo gridViewInfo = (GridViewInfo)this.gridView.GetViewInfo(); int x = gridViewInfo.GetColumnLeftCoord(gridHitInfo.Column) + gridHitInfo.Column.Width; //右邊線向左移動3個像素位置不彈出對話方塊(實驗證明3個像素是正好的) if (e.X < x - 3) { XtraMessageBox.Show("點擊Name欄位標題!"); } } } }
DevExpress GridView提示之欄位標題點擊事件