zoukankan      html  css  js  c++  java
  • 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列标题!");
      
                        }
      
                    }
      
                }
      
            }
  • 相关阅读:
    贪心:字典树openjudge1799-最短前缀
    BFS:noi6044鸣人与佐助
    广搜:codevs-3344(初步bfs)
    2016noip感想(普及组)
    NOI-Openjudge-8462-大盗阿福
    20155326 第12周课堂实践总结(二)String类和Arrays类的学习
    20155326 第12周课堂实践总结(一)
    20155326 实验三 敏捷开发与XP实践
    20155326 2016-2017-2 《Java程序设计》第十周学习总结
    2016-2017-2 20155326实验二《Java面向对象程序设计》实验报告
  • 原文地址:https://www.cnblogs.com/zhangruisoldier/p/4242486.html
Copyright © 2011-2022 走看看