GridPanel - breite von Spalte festlegen



  • Hallo Community!

    Ich nutze ein GridPanel, in welchem Informationen angezeigt werden.
    Das sieht wie folgt aus:

    http://imageshack.us/photo/my-images/204/gridp.jpg/

    Ich möchte nun im Code direkt festlegen, das diese Trennlinie zwischen Eigenschaft und Wert, also z.B. zwischen "AllowScrollBelow" und "False", an einer bestimmten Position ist. Und zwar genau so, das True und False ganz rechtsbündig sind.

    Ich hab nun schon ewig rumgesucht, aber ich finde die Option einfach nicht wo ich das festlegen kann. Kann mir da bitte jemand einen Tipp geben.

    Vielen Dank an alle Helfer

    lg



  • Das PropertyGrid hat eine private Methode namens MoveSplitterTo.

    -> Reflection-Schweinereien



  • mmh, mit Reflection hab ich noch nicht viel gemacht.
    Geht das nicht auch ohne?

    Bzw. wie kann ich da genau die private-Methode aufrufen?

    lg



  • Glaube nicht.
    Ich habe mir die Sache mit ILSpy nochmal näher angesehen und in eine Extension-Methode verpackt.

    private void Form1_Load(object sender, EventArgs e)
    {
    	propertyGrid1.MoveSplitter(40);
    }
    
    static class Ext
    {
    	public static void MoveSplitter(this PropertyGrid propertyGrid, int splitter)
    	{
    		FieldInfo gridViewFieldInfo = propertyGrid.GetType().GetField("gridView", BindingFlags.NonPublic | BindingFlags.Instance);
    		var gridView = gridViewFieldInfo.GetValue(propertyGrid);
    		MethodInfo dynMethod = gridView.GetType().GetMethod("MoveSplitterTo", BindingFlags.NonPublic | BindingFlags.Instance);
    		dynMethod.Invoke(gridView, new object[] { splitter });
    	}
    }
    

    Das ist nicht im Sinne des Erfinders.

    (Das ist das Windows Forms PropertyGrid. Hast Du überhaupt davon geredet oder arbeitest Du mit WPF?)


Log in to reply