程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何获得Visual Studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何获得Visual studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体??

开发过程中遇到如何获得Visual studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何获得Visual studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体?的解决方法建议,希望对你解决如何获得Visual studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体?有所启发或帮助;

我知道必须有一种方法可以做到这一点(而且我找到了一种干净利落的方法)。Sheng的解决方案正是我作为临时解决方案提出的,但是在一位朋友指出Form该类最终从一个abstract类继承之后,我们应该能够完成此工作。如果他们能做到,我们就可以做到。@H_772_7@

我们从这段代码转到了问题@H_772_7@

Form1 : Form

问题

public class Form1 : BaseForm
...
public abstract class BaseForm : Form

这是最初的问题起作用的地方。如前所述,一位朋友指出System.windows.Forms.Form实现了抽象的基类。我们能够找到…@H_772_7@

更好的解决方案的证明

  • 继承层次结构:@H_772_7@

    • 系统对象
    • System.MarshalByRefObject(public **abstract** class MarshalByRefObject
      • System.ComponentModel.Component
      • System.Windows.Forms.Control
        • System.Windows.Forms.ScrollableControl
        • System.Windows.Forms.ContainerControl

据此,我们知道设计人员可以显示实现基本抽象类的类,而不能显示立即实现基本抽象类的设计器类。中间最多必须有5个,但是我们测试了1个抽象层,最初提出了这个解决方案。@H_772_7@

初始解决方案

public class Form1 : MIDdleClass
...
public class MIDdleClass : BaseForm
... 
public abstract class BaseForm : Form
...

这实际上可以正常工作,并且设计器可以很好地解决问题。…除了您的生产应用程序中有一个额外的继承级别,这仅是由于winforms设计器的不足才有必要!@H_772_7@

这不是100%surefire解决方案,但它相当不错。基本上,您通常会使用#if DEBUG经过改进的解决方案。@H_772_7@

精制解决方案

Form1.cs@H_772_7@

#if DEBUG
public class Form1 : MIDdleClass
#else 
public class Form1 : BaseForm
#endif
...
@H_113_2@mIDdleClass.cs@H_772_7@
public class MIDdleClass : BaseForm
...

BaseForm.cs@H_772_7@

public abstract class BaseForm : Form
...

如果它处于调试模式,则仅使用“初始解决方案”中概述的解决方案。这个想法是,您将永远不会通过调试版本释放生产模式,并且您将始终以调试模式进行设计。@H_772_7@

设计器将始终以当前模式下构建的代码运行,因此您不能在发布模式下使用设计器。但是,只要您在调试模式下进行设计并释放在发布模式下构建的代码,您就可以开始使用。@H_772_7@

唯一的安全解决方案是您是否可以通过预处理程序指令测试设计模式。@H_772_7@

解决方法

我遇到了Windows窗体中的继承控件问题,并且需要一些建议。@H_772_7@

我确实对列表(由面板制成的自制GUI列表)中的项目使用基类,并为每种可以添加到列表中的数据类型使用了一些继承的控件。@H_772_7@

没问题,但是我现在发现,使基本控件成为抽象类是正确的,因为它具有方法,需要在所有继承的控件中实现这些方法,这些控件是从内部代码中调用的。 base-
control,但一定不能也不能在基类中实现。@H_772_7@

当我将基本控件标记为抽象时,Visual studio 2008设计器拒绝加载窗口。@H_772_7@

有没有一种方法可以使Designer与抽象的基本控件一起工作?@H_772_7@

大佬总结

以上是大佬教程为你收集整理的如何获得Visual Studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体?全部内容,希望文章能够帮你解决如何获得Visual Studio 2008 Windows窗体设计器来呈现实现抽象基类的窗体?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。