设置DataGridView的滚动条宽度

我正在开发一款适用于移动设备的应用,并希望将数据网格滚动条按钮放大,以增强触摸屏的可用性。 我不想改变系统设置窗口显示属性,因为这会影响整个设备。

有没有一种简单的方法来改变数据网格视图上滚动条的宽度?

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

那就是说,这就是你需要做的:

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

这是简单的方法。 你没有得到拖拽和东西,但这在这么小的用户界面中很少有用。 如果你愿意,你也可以稍后放入。

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

嗯。 我假设.NET Compact Framework是因为你提到它是用于移动设备的……它是CF吗? 如果没有,一切都应该更容易一些。

编辑

自定义网格滚动的基本示例在这里!

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