2009-06-02 7 views
1

Quelque chose avec une longue chaîne présente simplement une vue inutilisable avec une barre de défilement ..Modification de la largeur de PropertyGrid du côté gauche éditeur de collection/vue

La largeur de l'éditeur de collection fixé par la conception et peut un séparateur être présenté à cette présentation géniale?

+0

éditée réponse à montrer solution –

+0

Acceptera la réponse que vous semblez vraiment être occupé et actif avec grille d'appui vertical à base de réflexion et WinForms généralement des choses :) Merci .. Hors sujet, Maintenant, je commence à avoir des cauchemars sur l'accrochage/la recherche de la grille de propriété de collection-vue à partir d'une autre grille de propriété avec une méthode similaire .. acclamations. –

+0

Pour info, ce que vous décrivez est le modulaire UITypeEditor tel que CollectionEditor (juste au cas où cela aide la recherche ...) –

Répondre

5

Je n'ai pas vu un moyen de le faire avec PropertyGrid régulière, mais si cela ne vous dérange pas de payer, Visualhint a une offre beaucoup plus développée here - peut-être essayer.


Ceci fait le travail en utilisant la réflexion; utiliser avec précaution ...

using System; 
using System.Reflection; 
using System.Windows.Forms; 
class Program { 
    [STAThread] 
    static void Main() { 
     Application.EnableVisualStyles(); 
     Form form = new Form(); 
     // this bar will control the splitter 
     ScrollBar sb = new HScrollBar { 
      Minimum = 10, Maximum = 200, 
      Dock = DockStyle.Bottom 
     }; 
     // the grid we want to control 
     PropertyGrid grid = new PropertyGrid { 
      SelectedObject = form, Dock = DockStyle.Fill 
     }; 
     // add to the form 
     form.Controls.Add(grid); 
     form.Controls.Add(sb); 
     // event to update the grid 
     sb.ValueChanged += delegate { 
      MoveSplitterTo(grid, sb.Value); 
     }; 
     Application.Run(form); 
    } 
    static void MoveSplitterTo(PropertyGrid grid, int x) { 
     // HEALTH WARNING: reflection can be brittle... 
     FieldInfo field = typeof(PropertyGrid) 
      .GetField("gridView", 
       BindingFlags.NonPublic | BindingFlags.Instance); 
     field.FieldType 
      .GetMethod("MoveSplitterTo", 
       BindingFlags.NonPublic | BindingFlags.Instance) 
      .Invoke(field.GetValue(grid), new object[] { x }); 
    } 
} 
+0

Merci Marc .. mais je cherche vraiment un livré avec un cadre de 250 Mo pour avoir la capacité. –

Questions connexes