RE: PropertyGrid Divider in C#

19/04/2010 - 21:45 von Frank Dzaebel | Report spam
Hallo Lukas,

Auch, wenn Du die Frage noch nicht gestellt hast ...
Hier schon mal die Antwort ;-)

Auf der EggheadCafe-Seite ist es z.T. falsch angezeigt.
Besser hier:
http://groups.google.com/group/micr...e841d7d27c
als hier:
http://www.eggheadcafe.com/software...vider.aspx

Für Dein Szenario als Lösung vielleicht etwas wie:

using System.Windows.Forms;
using PropGridSplitter.Properties;
using System.Reflection;

namespace PropGridSplitter
{
public partial class SettingsForm : Form
{
public SettingsForm()
{
InitializeComponent();
}

public SettingsForm(Settings settings) : this()
{
propertyGrid1.SelectedObject = settings;
}

/// <summary>Setzen der Breite des linken Namensbereiches des
/// PropertyGrids. Günstig ist oft ein Drittel der Gesamtbreite.
/// </summary>
/// <param name="grid">Das PropertyGrid, das modifiziert
/// werden soll.</param>
/// <param name="width">Die Breite in Pixeln.</param>
/// <remarks>
/// Achtung, es werden private Variablen benutzt.
/// Dies kann sich in .NET ServicePacks àndern.
/// In .NET 4.0 aktuell [April 2010] lauffàhig.
/// </remarks>
private void SpaltenSplitterBreite(PropertyGrid grid, int width)
{
object gridView = typeof(PropertyGrid).InvokeMember(
"gridView", BindingFlags.GetField | BindingFlags.NonPublic |
BindingFlags.Instance, null, grid, null);
gridView.GetType().InvokeMember("MoveSplitterTo",
BindingFlags.InvokeMethod | BindingFlags.NonPublic |
BindingFlags.Instance, null, gridView, new object[] { width });
}

private void SettingsForm_Load(object sender, System.EventArgs e)
{
SpaltenSplitterBreite(propertyGrid1, 100);
}
}
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
 

Lesen sie die antworten

#1 Luc
20/04/2010 - 08:27 | Warnen spam
On 19 Apr., 21:45, "Frank Dzaebel" wrote:
Hallo Lukas,

Auch, wenn Du die Frage noch nicht gestellt hast ...
Hier schon mal die Antwort ;-)

Auf der EggheadCafe-Seite ist es z.T. falsch angezeigt.
Besser hier:http://groups.google.com/group/micr...entwickler
als hier:http://www.eggheadcafe.com/software...id-divi...

Für Dein Szenario als Lösung vielleicht etwas wie:

using System.Windows.Forms;
using PropGridSplitter.Properties;
using System.Reflection;

namespace PropGridSplitter
{
  public partial class SettingsForm : Form
  {
    public SettingsForm()
    {
      InitializeComponent();
    }

    public SettingsForm(Settings settings) : this()
    {
      propertyGrid1.SelectedObject = settings;
    }

    /// <summary>Setzen der Breite des linken Namensbereiches des
    ///   PropertyGrids. Günstig ist oft ein Drittel der Gesamtbreite.
    /// </summary>
    /// <param name="grid">Das PropertyGrid, das modifiziert
    ///   werden soll.</param>
    /// <param name="width">Die Breite in Pixeln.</param>
    /// <remarks>
    ///    Achtung, es werden private Variablen benutzt.
    ///    Dies kann sich in .NET ServicePacks àndern.
    ///    In .NET 4.0 aktuell [April 2010] lauffàhig.
    /// </remarks>
    private void SpaltenSplitterBreite(PropertyGrid grid, int width)
    {
      object gridView = typeof(PropertyGrid).InvokeMember(
         "gridView", BindingFlags.GetField | BindingFlags.NonPublic |
         BindingFlags.Instance, null, grid, null);
      gridView.GetType().InvokeMember("MoveSplitterTo",
         BindingFlags.InvokeMethod | BindingFlags.NonPublic |
         BindingFlags.Instance, null, gridView, new object[] { width });
    }

    private void SettingsForm_Load(object sender, System.EventArgs e)
    {
      SpaltenSplitterBreite(propertyGrid1, 100);
    }
  }

}

ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]http://Dzaebel.NET



^^, hahaha. Du bist schneller als die Polizei erlaubt.
Super danke, werd ich gleich ausprobieren.

DANKE

Ähnliche fragen