изменение свойства System.Windows.Forms.PropertyGrid
От: hoakim n
Дата: 26.04.05 09:37
Оценка:
Есть проблема — в этом контроле по умолчанию ширина колонок 50\50, т.е вертикальный сплиттер находится посередине. Хотелось бы сделать так, что бы можно было бы сохранять положение сплиттера, т.е после загрузки приложения его положение было бы прежним, а не в центре. Все контролы жестко зашиты в этом контроле(PropertyGrid) — доступ к ним невозможен. Что можно предпринять? Посоветуйте...
изменение свойства System.Windows.Forms.PropertyGrid
От: Аноним  
Дата: 26.04.05 10:06
Оценка:
см. здесь


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: изменение свойства System.Windows.Forms.PropertyGrid
От: hoakim n
Дата: 26.04.05 12:11
Оценка:
Здравствуйте, Daima, Вы писали:

D>см. здесь


Красиво.... тока насколько могу судить, метода, показывающего где расположен сплиттер внутри PropertyGrid нет...
Как же мне определить, куда был перемещен сплиттер, что бы потом восстанавливать его с помощью
MoveSplitterTo?
Как получить и установить ширину первой колонки PropertyGrid
От: Аноним  
Дата: 26.04.05 12:34
Оценка: 20 (1)
#Имя: FAQ.dotnet.gui.propertygrid.getsplitter
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
ссылка на оригинальное сообщение
Re[2]: изменение свойства System.Windows.Forms.PropertyGrid
От: hoakim n
Дата: 26.04.05 13:14
Оценка:
Здравствуйте, Daima, Вы писали:

D>ширина первой колонки:
Type type  = this.propertyGrid1.GetType();
D>   FieldInfo field = type.GetField("gridView",BindingFlags.NonPublic  |BindingFlags.Instance);
   
D>   object valGrid = field.GetValue(this.propertyGrid1);
D>   Type gridType = valGrid.GetType();
D>   int width = (int)gridType.InvokeMember("GetLabelWidth",BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance,null,
D>    valGrid,new object[] {});
D>   MessageBox.Show(width.ToString());



Благодарствую, я было нашел вот такое решение
FieldInfo myFieldInfo = gridType.GetField("labelRatio");
object data = myFieldInfo.GetValue(valGrid);

Но ваше решение мне кажется более элегантным — спасибо...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.