Как удалить / скрыть кнопку «Страницы свойств» из PropertyGrid?

#c# #propertygrid

#c# #propertygrid

Вопрос:

Я работаю над панелью PropertyGrid и пытаюсь удалить или скрыть кнопку «Страницы свойств», поскольку для меня это бесполезно, я попытался установить ToolBarVisible в значение false, но это скрывает все три кнопки на панели инструментов. Вот как выглядит моя сетка свойств:

введите описание изображения здесь

Комментарии:

1. ToolbarVisible скрывает это и два других ; этого достаточно?

2. @MarcGravell Мне нужны два других, чтобы отсортировать свойства по категориям или в алфавитном порядке.

3. к, в таком случае: я не знаю простого способа сделать это, извините; может быть, кто-то другой знает…

4. Там ничего не задокументировано. Но вы можете взломать ее, например: var bs = propertyGrid1.Controls.OfType<ToolStrip>().FirstOrDefault().Items; bs[bs.Count - 1].Visible = false; bs[bs.Count - 2].Visible = false; для справки это код, который ее создает (кажется, он всегда в конце): referencesource.microsoft.com/#system.windows.forms/winforms /…

5. Спасибо @SimonMourier, я попробую и вернусь к вам.

Ответ №1:

Официального способа нет, но вы можете взломать сетку свойств, получив доступ к ее внутренним элементам управления.

Вот пример кода, который пытается сделать это максимально изящно. Вы также можете проверить, является ли текст последнего элемента управления «Страницами свойств», но он может не работать с локализованными версиями.

 var buttons = propertyGrid1.Controls.OfType<ToolStrip>().FirstOrDefault()?.Items;
if (buttons != null amp;amp;
    buttons.Count >= 2 amp;amp;
    buttons[buttons.Count - 1] is ToolStripButton amp;amp; // could test Text...
    buttons[buttons.Count - 2] is ToolStripSeparator)
{
    buttons[buttons.Count - 1].Visible = false;
    buttons[buttons.Count - 2].Visible = false;
}
  

Используйте на свой страх и риск.