有没有办法,如何在.net紧凑框架的winforms中使滚动条更宽? 我希望手指应用程序友好,但滚动条对于手指不小的人来说非常狭窄。
编辑:
问题在于ListView,DataGrid等组件中的内置滚动条......
Windows Mobile 6.0,.NET Compact Framework 3.5
感谢。
答案 0 :(得分:2)
我没有检查过,因为我没有设备,但有传言说你可以改变每个Regstry设置的大小:
[HKEY_LOCAL_MACHINE \ SYSTEM \ GWE]
cyHScr = 13 - 水平滚动条的默认高度
cxVScr = 13 - 垂直滚动条的默认宽度
亲切的问候
托马斯
答案 1 :(得分:1)
以下是我对此的看法:
mydatagrid.Contorls[0]
将是水平滚动条。
这可以通过名字来完成,也许我稍后会发布一个更精细的解决方案。一旦你达到了正确的控制,只需要更新滚动条的高度属性,对吧?...错! 请记住,滚动条是数据网格/列表框中的一个元素...因此,它的原始位置(绘制位置)设置在一个点上,该点可以使元素在初始化时的高度值处被看到... 所以你的代码必须处理原始矩形内滚动条位置的重新定位。
myDataGrid.Controls[0].Height = myDataGrid.Controls[0].Height + 60;
myDataGrid.Controls[0].Location = new Point(myDataGrid.Controls[0].Location.X, myDataGrid.Controls[0].Location.Y - 60);
最后要考虑的事情: 当您使用滚动条大小时,您需要记住元素的其他部分取决于滚动条,例如,如果滚动条最终隐藏在网格上的某些行,它们将无法访问...
答案 2 :(得分:1)
VB版:
'Increase size of the Vertical scrollbar of your DataGrid'
For Each vBar As VScrollBar In yourDG.Controls.OfType(Of VScrollBar)()
vBar.Width = 25
Next
'Increase size of the Horizontal scrollbar of your DataGrid'
For Each hBar As HScrollBar In yourDG.Controls.OfType(Of HScrollBar)()
hBar.Height = 25
Next
所有这些都归于Yahoo Serious。
答案 3 :(得分:0)
您可以使用反射。灵感来自this link,我的代码看起来像这样。 (这可能有点过于谨慎,但我不太确定这与反射的通用程度如何。例如,在此表单上没有为TextBox找到VScrollBar。)
using System.Reflection;
//...
public static void SetVerticalScrollbarWidth(Control c, int w)
{
try
{
var lGridVerticScrollBar = GetNonPublicFieldByReflection<VScrollBar>(c, "m_sbVert");
lGridVerticScrollBar.Width = w;
}
catch
{
// fail soft
}
}
public DataGridForm()
{
SetVerticalScrollbarWidth(dataGrid, 30);
}
public static T GetNonPublicFieldByReflection<T>(object o, string name)
{
if (o != null)
{
Type lType = o.GetType();
if (lType != null)
{
var lFieldInfo = lType.GetField(name, BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
if (lFieldInfo != null)
{
var lFieldValue = lFieldInfo.GetValue(o);
if (lFieldValue != null)
{
return (T)lFieldValue;
}
}
}
}
throw new InvalidCastException("Error in GetNonPublicFieldByReflection for " + o.ToString() );
}