DevExpress GridView使用技巧之列標題點擊事件


在這里使用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列標題!" );
  
                     }
  
                 }
  
             }
  
         }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM