代码之家  ›  专栏  ›  技术社区  ›  jasonk

设置DataGridView的滚动条宽度

  •  2
  • jasonk  · 技术社区  · 16 年前

    我正在为一个移动设备开发一个应用程序,我想让一个数据报滚动条按钮变大,以增强触摸屏的可用性。我不想更改系统设置Windows显示属性,因为这将影响整个设备。

    有没有一种简单的方法可以改变DataGrid视图上滚动条的宽度?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Paul Sasik    16 年前

    我想你得自己滚。不过不用担心,不应该那么难。我说不应该,因为我已经有一段时间没有完成.NET CFUI(从臀部拍摄),但已经为.NET 2.0触摸屏UI实现了一个自定义滚动条。

    也就是说,你需要做的是:

    • 在网格视图中隐藏滚动条
    • 创建一个自定义控件,其中包含两个按钮,一个顶部,一个底部
    • 处理这些按钮上的单击,并将其作为向上/向下滚动调用转发到网格视图。

    这是简单的方法。你不会得到拖拽和东西,但这在这么小的用户界面中很少有用。如果你想的话,你也可以晚些时候加入。

    警告:网格视图可能没有显示向上/向下滚动的API。在这种情况下,您需要将自定义控件覆盖在网格视图的顶部,该视图将显示滚动条。您可以使用自定义控件隐藏内置滚动条,而不是调用向上/向下滚动,而是将Windows消息发布到自定义控件后面的区域,以“假”单击并使网格视图按您喜欢的方式移动。

    嗯。我假设.NET Compact框架,因为你提到它是用于移动设备的…是CF吗?如果不是,一切都应该简单一点。

    编辑

    基本样品 custom grid scrolling here!

        2
  •  1
  •   Marcel Gosselin    13 年前
    FieldInfo fi = dataGridView1.GetType().GetField( "m_sbVert", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance );
    
    ( ( VScrollBar ) fi.GetValue( dataGridView1 ) ).Width = 50;
    
    fi = ultraGrid1.GetType().GetField( "m_sbHorz", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance );
    
    ( ( HScrollBar ) fi.GetValue( ultraGrid1 ) ).Height = 0;
    

    其中50是垂直滚动条宽度,0是水平滚动条高度。

    using System.Reflection;
    

    在你的表格的开头。

    它适用于 WinCE 5.0 .