2009-06-02 103 views
1

任何與一個長字符串簡單地引入了一個滾動條不可用的視圖..改變PropertyGrid中的寬度左側集合編輯器/視圖

是上集合編輯器的寬度由設計固定,並且可以在分離器是介紹給這個真棒演示文稿?

+0

編輯答案顯示基於反射的解決方案 – 2009-06-15 17:25:44

+0

會接受的答案,因爲你似乎真的是很忙,有道具,電網有功和一般的WinForms東西:)謝謝..題外話,現在我開始用類似的方法在鉤住/從另一個屬性網格搜索集合視圖屬性網格時做惡夢..乾杯。 – 2009-06-15 18:41:45

回答

5

我還沒有看到通過PropertyGrid這樣做的方法,但如果您不介意付費,Visualhint會提供更爲開發的產品here - 可能會試用它。


這樣做使用反射的工作;謹慎使用...

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 }); 
    } 
} 
相關問題