继承:访问父成员

时间:2013-06-28 05:40:56

标签: c# inheritance

我有一个继承自System.Windows.Forms.Form

的班级
public partial class RAT : Form

并继承了RAT

的另一个类
class CAD : RAT

当我创建CAD的实例时,我想要更改RAT(实际上是来自)大小,当我处置CAD对象时,我想要{{1}回到原来的。

RAT构造函数:

CAD

public CAD() { base.Size = new System.Drawing.Size(805, 700); } 析构函数:

CAD

但问题是,它没有执行此代码。它没有更新表单的 ~CAD() { base.Size = new System.Drawing.Size(805, 300); } 。但是当我在size中更新它时,它完美无缺:

RAT

我认为我正在以正确的方式访问父类成员。那可能是什么问题?

其他

之后我尝试从 CAD CADObject = new CAD(); this.Size = new System.Drawing.Size(805, 700); 构造函数添加一个控件:

CAD

但是这段代码也没有用。

整个场景:

public CAD() { TextBox sample = new TextBox(); sample.Multiline = true; sample.Location = new System.Drawing.Point(50, 500); sample.Size = new System.Drawing.Size(50, 100); base.Controls.Add(sample); //here `base` refers to `RAT` class } 是表格。 RAT是一个继承自CAD的简单类。从RAT按钮点击创建CAD对象。 RAT具有该计划的一些额外功能,因此我想通过向CAD添加一些其他控件并增加其大小来更新RAT的用户界面,并从{{1}更新它们} RATCAD

该程序非常简单。我只是想从子类访问父成员。我知道我可以在methods中完成所有操作,但我试图从子类中访问它。这应该有效。

完整代码:

properties

1 个答案:

答案 0 :(得分:2)

CAD是一种全新的形式,您永远不会展示它。屏幕上的表单永远不会更改。您应该给它一个字段CAD,而不是从RAD继承RAD form,并通过该字段访问该表单。

你也有一个可疑的终结者。当你期望它时它不会运行,当它运行时,我怀疑它不会按你想要的那样运行。特别是,只要您拨打Dispose就不会被调用。

class CAD
{
    RAT form;

    public CAD(RAT form)
    {
        this.form = form;
        // Now the CAD class maintains a reference to the form it is
        // supposed to change. This field can be used in other methods
        // when it is time to remove the extra controls and restore
        // the size, like so:
        // form.Size = new System.Drawing.Size(805, 300);
    }
}