【问题标题】:Accessing Windows Form components in a derived class in c#在 C# 中访问派生类中的 Windows 窗体组件
【发布时间】:2019-09-18 10:58:47
【问题描述】:

我是学习 C# 的新手,目前正在学习使用类图使用 Windows 窗体/类。

我想要做的是从我创建的一个类中访问 Windows 窗体组件,例如 InitializeComponent()

我试过了

public partial class Class1: Form1
{
   public Class1()
   {InitializeComponent();}

除非我去更改设计器设置以使其公开,否则它不起作用。这一切都很好,适用于我创建的其他 Windows 窗体组件,但是当我最后运行程序时,我只得到一个空白窗体,其中没有任何内容。

使用Class Diagram,我认为它应该显示为所附照片,所有方法都显示在类图的“方法”部分下

有什么想法吗?

干杯

【问题讨论】:

  • Form1 中有任何控件吗?您在Class1 中看不到这些控件吗?你如何加载Class1Form1 的构造函数可能已经在调用 InitializeComponent。您无需在 Class1 Constructor 中再次调用它。
  • Winforms 设计器默认采用正确的方式,类的实现细节应该是私有的。如果您需要向其他代码公开某些内容,则添加一个公共属性。或者实现一个接口,你忘了在 Class1 声明中添加 ISubject。如果您愿意,您可以打破 OOP 规则,使用设计器将控件的 Modifiers 属性从 Private 更改为 Public。将 InitializeComponent() 公开是根本错误的,它只能从构造函数中正确调用。

标签: c# windows-forms-designer class-diagram


【解决方案1】:

使用 WinForms 方法 InitializeComponent() 是默认方法,不能从外部访问。

默认它是从控件构造函数中调用的,通常只需要在构造函数中调用 InitializeComponent() 之前或之后添加代码 - 不要从外部调用它。

Visual Studio 为该方法生成此自动文档,暗示它具有特殊内容:

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多