代码之家  ›  专栏  ›  技术社区  ›  GuidoG

Visual Studio中断视觉继承

  •  0
  • GuidoG  · 技术社区  · 7 年前

    我做了一个 FormBase ,我从中继承了 FomBaseList 和A FormBaseDetail .
    项目中的所有其他表单都来自 FormBaseList 窗体基础详细信息 .
    现在看来,vs在这方面有很大的问题,我最大的问题是,vs不断地将属性值从父窗体写入designer.cs,从子窗体写入designer.cs。

    例如,在 形式基线 我有这个财产/价值:

    this.gttDXGridView1.OptionsView.ShowAutoFilterRow = true;
    

    我希望以派生的形式,例如 FormClientList ,在designer.cs中没有提到该值,因为它应该从其父级获取该值。换句话说,就是简单的基本oop。
    我也希望当我在 窗体客户端列表

    this.gttDXGridView1.OptionsView.ShowAutoFilterRow = false;
    

    这被视为基类的重写。
    但是,vs在 FormClientList.Designer.cs 其值在 FormBaseList.Designer.cs .
    在我看来,这打破了oop的规则,其他支持可视化继承的工具(比如delphi)也能做到这一点。

    我怎样才能阻止vs这样做呢?
    使用设计器更改属性。
    所有控件都是devexpress控件,或派生自devexpress控件。

    另一个例子 ,正好相反,所以很奇怪。

    例如,在基窗体上放置一个按钮并给它一个图像。
    带图像的按钮出现在所有派生窗体上。
    现在更改基本窗体按钮上的图像。
    您可能希望图像在所有派生形式上也发生更改,但这种情况不会发生。
    我发现vs再次在所有派生的designer.cs文件中写入了按钮的属性值,这次它不会覆盖它们。

    1 回复  |  直到 7 年前
        1
  •  0
  •   GuidoG    7 年前

    我在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