设置DataGridView的滚动条宽度

时间:2010-03-24 21:32:36

标签: c# winforms visual-studio-2008

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

是否有一种简单的方法可以改变数据网格视图上滚动条的宽度?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

修改

custom grid scrolling here!

的基本样本

答案 1 :(得分:1)

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