派生类具有父私有属性

时间:2013-06-16 06:08:10

标签: c# inheritance .net-4.5

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

我的Parent Form名称MainForm来自System.Windows.Forms.Form

MainForm : System.Windows.Forms.Form

第二个ChildForm来自MainForm

ChildForm : MainForm

MainForm上只有一个按钮,这个类显然是private。按钮调用ChildForm

enter image description here

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

enter image description here

那么如何将其从ChildForm中移除并保留在原位?为什么私人会员被展示出其范围?

2 个答案:

答案 0 :(得分:2)

根本没有显示出它的范围。当您创建ChildForm的实例时,您还可以获得MainForm的实例以及它的各个部分 - 比如按钮。 “私有”范围只会影响您在开发时访问该按钮的方式,即您无法从表单的类外部以编程方式访问它。

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

答案 1 :(得分:0)

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

我只是让ChildForm成为自己的形式(继承自System.Windows.Forms.Form而不是MainForm),这将从ChildForm中删除按钮,并停止你必须将MainForm上的按钮设为public / protected。 / p>

相关问题