1

简单继承有问题。问题很简单:

我有一个Parent Form名字MainForm来源于System.Windows.Forms.Form.

MainForm : System.Windows.Forms.Form

第二个ChildForm是从MainForm.

ChildForm : MainForm

MainForm上面只有一个按钮,这显然是private为这个类准备的。按钮调用ChildForm

在此处输入图像描述

但是在创建ChildForm它之后也有那个按钮,我不能用它做任何事情。它甚至不在设计面板上,但是当我运行应用程序时,它也可以工作并调用ChildForm。我根本想不通...

在此处输入图像描述

那么我怎样才能将它从它的位置移除ChildForm并保持在它的位置呢?为什么私人成员被显示在其范围之外?

4

2 回答 2

2

它根本没有超出其范围。当您创建 ChildForm 的实例时,您还将获得 MainForm 的实例及其零碎部分 - 就像按钮一样。“私有”范围只会影响您在开发时访问该按钮的方式,即您无法从表单类外部以编程方式访问它。

您需要做的是创建一个公共或受保护的属性,您可以在其中设置子窗体中按钮的可见性。在子表单中,您可以将该属性切换(设置)为所需的默认值,一个很好的地方是在构造函数或表单初始化例程中。根据您使用的 UI 技术,您可以将按钮的可见性直接绑定到属性,或者您可以在表单属性更改时以编程方式设置按钮的属性。

于 2013-06-16T06:34:37.777 回答
0

为什么子窗体需要从主窗体继承?据我了解,主窗体有一个按钮,它创建一个子窗体实例并显示它。如果你最终禁用了表单上唯一的东西,那么继承它真的没有任何意义......

我只会让 ChildForm 成为自己的表单(继承自 System.Windows.Forms.Form 而不是 MainForm),这将从 ChildForm 中删除按钮,并且不必将 MainForm 上的按钮设为 public/protected。

于 2013-06-16T06:47:38.483 回答