• (转) 实现wince datagrid 上下滑屏数据浏览


    开发 基于wince 手持设备数据库应用时 由于是触摸屏 当datagrid 数据过多 往往用户烦于去控制又窄又细的上下滚动条 尤其是高分辨率的屏上 (如魅族M8系统 720×480)

    而且datagrid 不支持触摸拖动 所以自己研究出来如下 事件组合 

     1       //x y 是静态变量 鼠标按下 坐标记录  
     2 
     3       private void dataGrid2_MouseDown(object sender, MouseEventArgs e)
     4         {
     5             x = e.X;
     6             y = e.Y;
     7         }
     8 
     9      // 鼠标滑动事件处理
    10 
    11         private void dataGrid2_MouseMove(object sender, MouseEventArgs e)
    12         {
    13             try
    14             {
    15                 //当前鼠标y坐标值与滑动开始y值的差 给予datagrid 上下滑动距离值
    16                 yy = e.Y - y;
    17 
    18                 //25 值 datagrid行高值(这个值不定 需要自己反复试得到理想值) 根据距离给定滑动行数
    19                 yy = yy / 25;
    20 
    21               
    22    
    23                     dataGrid2.CurrentRowIndex = dataGrid2.CurrentRowIndex + yy;
    24               }
    25 
    26             //捕捉不做任何处理
    27             catch
    28             { }
    29         }

    使用 效果不错!

    测试发现这个并不是很好使,后来又自己定义添加的新方法比较好使

    在datagrid上的Controls成员内有三个成员比较重要,其中Controls[1]表示的滚动条

    我们在拖动滚动条的时候datagrid可以上下滚动,如果将鼠标的拖动绑定在滚动条的滚动上,基本上就可以实现对datagrid的拖动了,因此实现手段如下

     1         private static int y1;//定义存储变量
     2         private static int ScrMinimum;//scrollbar的最大最小值
     3         private static int ScrMaximum;
     4         VScrollBar ScrBar = new VScrollBar(); //新建一个滚动条
     5         private void MouseDown(object sender, MouseEventArgs e)
     6         {
     7             try
     8             {
     9                 y1 = e.Y;
    10                 ScrBar = (VScrollBar)dG_Task.Controls[1];//获取datagrid上的滚动条 竖状
    11                 ScrMinimum = ScrBar.Minimum;
    12                 ScrMaximum = ScrBar.Maximum;
    13             }
    14             catch (System.Exception ex)
    15             {
    16             }            
    17         }
    18         void MouseMove(object sender, MouseEventArgs e)
    19         {
    20                     
    21             try
    22             {
    23                int _dec = y1-e.Y;
    24                int _NewValue= ScrBar.Value + _dec/25;//选取一个合适的滚动值
    25                if (_NewValue < ScrMinimum)
    27                    ScrBar.Value = ScrMinimum;
    28                else if (_NewValue > ScrMaximum)
    29                    ScrBar.Value = ScrMaximum;
    30                else
    31                    ScrBar.Value = _NewValue;
    32             }
    33             catch (System.Exception ex)
    34             {            
    35             }
    36         }
  • 相关阅读:
    使用VMware Workstation安装win7镜像文件时遇见的错误
    每次启动懂maven项目都必须关闭javaw.exe进程
    laravel excel导出调节列宽度,对某列中数据颜色处理
    三个<li>元素放一行
    php中bootstrap框架.popover弹出框,鼠标移动到上面自动显示,离开自动消失
    锚点,自动跳转到某处
    WdatePicker控件Javascript取得当前时间、取得减30分钟时间
    (mysql数据库报错)The user specified as a definer ('root'@'%') does not exist
    c# tcp协议发送数据
    c# 键值对的方式post提交
  • 原文地址:https://www.cnblogs.com/FuYan/p/4126287.html
Copyright © 2020-2023  润新知