Как найти GridItem от нажатия на PropertyGrid? - PullRequest
1 голос
/ 23 сентября 2008

Я пытаюсь настроить поведение пользовательского интерфейса в элементе управления Windows Forms PropertyGrid. Я хотел бы иметь возможность отвечать на щелчки и двойные щелчки на элементах GridItems, чтобы изменить состояние. Например, чтобы перевернуть двоичную или троичную переменную через ее состояния.

Я могу получить базовый вид, посмотрев потомка с именем typename "PropertyGridView" и могу перехватить его событие Click. Только проблема в том, что мне делать? Я не могу найти функции, которые отображают координаты мыши на элементах сетки.

Существует SelectedGridItem, но это не полезно. Существует множество мест, в которых вы можете щелкнуть элемент управления, который не обновляет это свойство, и поэтому при ответе на щелчок при условии, что SelectedGridItem обновлен, вы получите много неверных результатов.

Помимо покупки элемента управления сеткой коммерческой недвижимости или перехода на какой-либо вид сетки, могу ли я здесь что-нибудь сделать? PropertyGrid - это почти то, что мне нужно. Я даже думаю о том, чтобы побродить с Reflector и сделать несколько очень недружелюбных вещей с этим элементом управления, чтобы получить нужные мне данные. :)

Дополнительная информация: я знаю об использовании пользовательских классов UITypeEditor, и уже делаю это в других областях (палитра цветов). К сожалению, выполнение пользовательского интерфейса требует дополнительного щелчка (для просмотра или раскрытия какого-либо интерфейса). Например, я установил флажок с помощью UITypeEditor.PaintValue и очень хотел бы иметь возможность просто щелкнуть по нему, чтобы установить или снять флажок.

1 Ответ

2 голосов
/ 23 сентября 2008

Если вам нужно перевернуть значения простого типа, вы можете отобразить значение перечисления в сетке свойств. Это автоматически появится в виде выпадающего списка. Если вам нужно создать более умный редактор пользовательского интерфейса, я предлагаю вам взглянуть на следующие статьи, в которых объясняется, как создавать пользовательский интерфейс в сетке свойств: http://msdn.microsoft.com/en-us/library/aa302334.aspx http://msdn.microsoft.com/en-us/library/aa302326.aspx

Если вы хотите обработать изменение значения в сетке свойств, чтобы сделать что-то в приложении, или изменить значения в сетке свойств, вы можете обработать OnPropertyValueChanged это поднимается после каждого изменения в сетке свойств.

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

...