- SetPropertyGridColumnWidth() simuliert das Verstellen der Spaltenbreite mit der Maus
- das PropertyGrid muss sichtbar sein (visible == true)
- Funktionsaufruf funktioniert nicht im Form-Konstruktor, da dort das PropertyGrid noch nicht sichtbar ist
using System;
using System.Windows.Forms;
using System.Reflection;
// statt im Konstruktor die Breite einzustellen, lieber das Ereignis Shown()
// benutzen, da dies erst eintritt, nachdem die gesamte Form schon angezeigt wurde
private void Form1_Shown(object sender, EventArgs e)
{
this.SetPropertyGridColumnWidth(PropertyGrid1, 100);
}
// Spaltenbreite eines Propertygrids setzen
private void SetPropertyGridColumnWidth(PropertyGrid grid, int width)
{
if (grid != null)
{
FieldInfo fi = grid.GetType().GetField(@"gridView", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
if (fi != null)
{
Control view = fi.GetValue(grid) as Control;
if (view != null)
{
// Funktion "MoveSplitterTo" holen
MethodInfo mi = view.GetType().GetMethod(@"MoveSplitterTo", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
if (mi != null)
{
// Funktion "MoveSplitterTo" ausführen
mi.Invoke(view, new object[] { width });
}
}
}
}
}