Я сделал 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, и на этот раз это не так.перезаписывает их.