Visual Studio ломает визуальное наследование - PullRequest
0 голосов
/ 21 ноября 2018

Я сделал FormBase, от которого унаследовал FomBaseList и FormBaseDetail.
Все остальные формы в проекте являются производными от FormBaseList или FormBaseDetail.
Теперь этокажется, что VS имеет огромные проблемы с этим, и моя самая большая проблема заключается в том, что VS продолжает записывать значения свойств из формы Ancestor в designer.cs из дочерней формы.

например, в FormBaseList У меня есть этосвойство / значение:

this.gttDXGridView1.OptionsView.ShowAutoFilterRow = true;

Я ожидаю, что в производной форме, например FormClientList, нет никакого упоминания об этом значении в designer.cs, поскольку оно должно извлечь значение из своего родителя.Другими словами, просто простой простой базовый ООП.
И я также ожидаю, что когда я изменяю свойство в FormClientList на

this.gttDXGridView1.OptionsView.ShowAutoFilterRow = false;

, это рассматривается как переопределение от базового класса.
Однако VS продолжает перезаписывать свойство в FormClientList.Designer.cs значением, найденным в FormBaseList.Designer.cs.
На мой взгляд, это нарушает правила ООП, другие инструменты, поддерживающие визуальное наследование, например Delphi, делают это правильно.

Как я могу остановить VS от этого?
Свойства изменяются с помощью конструктора.
Все элементы управления являются элементами управления DevExpress или являются производными от элемента управления DevExpress.

Еще один пример , который работает прямо напротив, так что это очень странно.

Например, поместите кнопку в BaseForm и дайте ей изображение.
Кнопка с изображением появляется во всех производных формах.
Теперь измените изображение на кнопке BaseForm.
Можно ожидать, что изображение также изменится на всех производных формах, но этого не происходит.
Я обнаружил, что снова VS записал значение свойства кнопки во все производные файлы designer.cs, и на этот раз это не так.перезаписывает их.

1 Ответ

0 голосов
/ 22 ноября 2018

Я создал тикет об этом на форуме DevExpress, и они смогли его воспроизвести.
Теперь он передан их разработчикам.

https://www.devexpress.com/Support/Center/Question/Details/T692940/devexpress-controls-break-visual-inheritance-in-visual-studio

Кажется, я не первый, кто сообщил о подобной проблеме.

https://www.devexpress.com/Support/Center/Question/Details/T692244/imageoptions-are-serialized-in-a-successor-when-visual-inheritance-is-in-effect

...