Вот фрагмент кода, который будет извлекать все объекты GridItem сетки свойств:
public static GridItemCollection GetAllGridEntries(PropertyGrid grid)
{
if (grid == null)
throw new ArgumentNullException("grid");
object view = grid.GetType().GetField("gridView", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(grid);
return (GridItemCollection)view.GetType().InvokeMember("GetAllGridEntries", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, view, null);
}
Конечно, так как при этом используется недокументированное частное поле таблицы свойств, в будущем работа не гарантируется: -)
Когда у вас есть все GridItems, вы можете отфильтровать их, используя свойство GridItem.GridItemType.