H> Есть проблема — в этом контроле по умолчанию ширина колонок 50\50, т.е вертикальный сплиттер находится посередине. Хотелось бы сделать так, что бы можно было бы сохранять положение сплиттера, т.е после загрузки приложения его положение было бы прежним, а не в центре. Все контролы жестко зашиты в этом контроле(PropertyGrid) — доступ к ним невозможен. Что можно предпринять? Посоветуйте...

D>см. здесь:


Type type  = this.propertyGrid1.GetType();
FieldInfo field = type.GetField("gridView",
   BindingFlags.NonPublic  |BindingFlags.Instance);
   
object valGrid = field.GetValue(this.propertyGrid1);
Type gridType = valGrid.GetType();
gridType.InvokeMember("MoveSplitterTo",
   BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Instance,
   null, valGrid,new object[] {10});


H> Красиво.... тока насколько могу судить, метода, показывающего где расположен сплиттер внутри PropertyGrid нет...

H>Как же мне определить, куда был перемещен сплиттер, что бы потом восстанавливать его с помощью
H>MoveSplitterTo?

ширина первой колонки:

   Type type  = this.propertyGrid1.GetType();
   FieldInfo field = type.GetField("gridView",
       BindingFlags.NonPublic  |BindingFlags.Instance);
   
   object valGrid = field.GetValue(this.propertyGrid1);
   Type gridType = valGrid.GetType();
   int width = (int)gridType.InvokeMember("GetLabelWidth",
       BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance,
       null, valGrid,new object[] {});
   
   MessageBox.Show(width.ToString());



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Автор: Daima    Оценить