【问题标题】:Set the Scrollbar width of a DataGridView设置 DataGridView 的滚动条宽度
【发布时间】:2010-03-24 21:32:35
【问题描述】:

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

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

【问题讨论】:

  • jasonk:我在这里整理了一个非常简单的自定义网格滚动器示例:mediafire.com/?nzjnmmjji31(我还添加了我的答案的链接。如果你想进一步追求这个想法,请告诉我。)

标签: c# winforms visual-studio-2008


【解决方案1】:

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

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

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

这是最简单的方法。你没有得到拖拽之类的东西,但无论如何这在如此小的 UI 中很少有用。如果你愿意,你也可以稍后加入。

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

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

编辑

custom grid scrolling here!的基本示例

【讨论】:

  • 它实际上运行的是完整的 Windows XP、Vista 或 7。但显示屏只有 5"。
【解决方案2】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    相关资源
    最近更新 更多