Обнаружение открытого поля DropDown в PropertyGrid в C # Winforms - PullRequest
2 голосов
/ 16 ноября 2011

Положение: У меня есть окно со сценой OpenGL, отображаемой внутри. Рядом со сценой OpenGL у меня есть PropertyGrid выбранного 3D-объекта в сцене.

Объекты в сцене могут быть изменены другими способами, кроме простого редактирования свойств (например, некоторые объекты обрабатываются с помощью запущенного сценария, который перемещает / масштабирует / окрашивает / ... объекты в сцене). Чтобы показать прямую подачу значений объекта в PropertyGrid, сетка обновляется каждый кадр, например:

void OnFrame()
{
    myPropertyGrid.Refresh();
}

Проблема: Из-за этого обновления каждого кадра я не могу открыть ни одно раскрывающееся окно в PropertyGrid (открытое раскрывающееся окно закрывается сразу же при обновлении PropertyGrid).

Вопрос: Есть ли какой-нибудь способ обнаружить, что раскрывающийся список открыт (например, свойство для проверки или событие, на которое можно подписаться), и предотвратить обновление в этом случае?

void OnFrame()
{
    if ( !PropertyGridInEditMode() )   // <-- What should this function check?
        myPropertyGrid.Refresh();
}

Примечание. По-видимому, простая проверка myPropertyGrid.ContainsFocus работает нормально, если просто ввести в поле значения PropertyGridItem, но не удается определить, если раскрывающийся список открыт (я полагаю, это потому, что раскрывающаяся форма вызывается с помощью IWindowsFormEditorService , и поэтому раскрывающийся список представляет собой отдельную форму, которая не является дочерней по отношению к PropertyGrid).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...