Вы можете использовать отражение. Вдохновленный этой ссылкой , мой код будет выглядеть примерно так.
(Это может быть слишком осторожно, но я не уверен, насколько это будет общего с отражением. Например, VScrollBar не найден для TextBox в этой форме.)
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() );
}