我有一个继承自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}更新它们} RAT
和CAD
。
该程序非常简单。我只是想从子类访问父成员。我知道我可以在methods
中完成所有操作,但我试图从子类中访问它。这应该有效。
完整代码:
properties
答案 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);
}
}