我有一个带有两个子窗体的MDI容器。我们已经教过(并且MSDN文档仅提供了示例)使用关键字“this”,它假设有问题的子对象是从MDI容器本身创建的。
如果我在MDI容器中创建对象,这是正确的:
Form_Child2 child = new Form_Child2(textBox1.Text);
child.MdiParent = this;
child.Show();
相反,我正在尝试做更多的事情:
Form_Child2 child = new Form_Child2(textBox1.Text);
child.MdiParent = Form_Parent;
child.Show();
但是,这会抛出一个错误,指出“Form_Parent”是一种类型,不能用作变量。我想我模糊地理解它的作用,但目前尚不清楚。我已经尝试过研究关键词'this',但仍然卡住了。
答案 0 :(得分:4)
如果你想成为一名C#程序员,理解类型和对象之间的区别是非常重要的。是的,这里有个大问题,这里需要一个Form_Parent实例,你不能使用类型名称。
只有一个 MDI父窗口的实例。您可以利用哪些内容,可以向父类添加静态属性。看起来像这样:
public partial class Form_Parent : Form {
public static Form_Parent Instance { get; private set; }
public Form_Parent() {
InitializeComponent();
Instance = this;
}
// etc..
}
现在很简单:
Form_Child2 child = new Form_Child2(textBox1.Text);
child.MdiParent = Form_Parent.Instance;
child.Show()
答案 1 :(得分:0)
这是因为你试图将Type
设为父母
在将其设置为Parent之前,您需要实例化该类型:
Form_Parent parent = new Form_Parent();
Form_Child2 child = new Form_Child2(textBox1.Text);
child.MdiParent = parent;
child.Show();
当然,如果您的父级已经创建,则需要将Parent设置为该实例,而不是创建新实例。
如果您不知道实例,对象和类的含义,我建议您阅读Object Oriented Programmation