有沒有什麼辦法,如何使.net緊湊框架的winforms更寬滾動條? 我想成爲應用程序手指友好的,但滾動條對於手指不小的人來說非常狹窄。.NET Compact框架 - 使滾動條更寬
編輯:
的問題是在如ListView控件,數據網格等組件內置的滾動條...
的Windows Mobile 6.0,.NET Compact Framework的3.5
感謝。
有沒有什麼辦法,如何使.net緊湊框架的winforms更寬滾動條? 我想成爲應用程序手指友好的,但滾動條對於手指不小的人來說非常狹窄。.NET Compact框架 - 使滾動條更寬
編輯:
的問題是在如ListView控件,數據網格等組件內置的滾動條...
的Windows Mobile 6.0,.NET Compact Framework的3.5
感謝。
我haven't檢查了,因爲我沒有設備,但有傳言說,你可以改變每Regstry設置大小:
[HKEY_LOCAL_MACHINE \ SYSTEM \ GWE]
cyHScr = 13 - 默認水平滾動條的高度
cxVScr = 13 - 垂直滾動條
此致的缺省寬度
托馬斯
這是我對這個:
mydatagrid.Contorls[0]
將是水平滾動條。 這可以通過名稱來完成,也許我會在稍後發佈更詳細的解決方案。一旦你達到了正確的控制,它只是一個更新滾動條的高度屬性的問題,對吧?......錯了! 記住滾動條是datagrid/listbox中的一個元素,因此它的原始位置(繪畫位置)被設置在一個點上,該點可以使元素在其初始化時的高度值被看到。代碼將不得不處理原始矩形內滾動條位置的重新定位。
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);
最後要考慮的事情: 當你玩的滾動條的大小,你需要記住的元素的其他部分取決於滾動條,例如,如果滾動條結束了對隱藏某些行網格,他們將無法到達...
你可以使用反射。受this link的啓發,我的代碼看起來像這樣。 (這可能有點過於小心,但我還不知道有通用的,這將是與反思例如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());
}
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
所有的thx都去雅虎嚴重。
我不知道緊湊框架,但我假設你已經檢查了「厚度」屬性。 – ChrisF 2009-06-08 09:19:10
@ChrisF:我應該在哪裏搜索「厚度」屬性? – TcKs 2009-06-08 09:40:24
我使用了「厚度」,因爲您需要垂直條的「寬度」屬性以及水平條的「高度」屬性。 – ChrisF 2009-06-08 09:58:50