ParentForm类用法

时间:2015-11-06 12:05:45

标签: c# winforms

我只是想知道为什么我不能使用Forms.ParentForm类从子表单中为ParentForm成员赋值。 像:

ParentForm.database.Remove(this.userAuth.Key);
ParentForm.database.Add(this.userAuth.Key, newValue);

感谢您的任何推荐!

3 个答案:

答案 0 :(得分:2)

ParentForm property只是Form类型...您无法从特定父表单访问任何内容,而无需先将其转换为该类型。< / p>

假设database可以访问且您的父表单命名为&#34; YourParentForm&#34;:

((YourParentForm)ParentForm).database.Remove(this.userAuth.Key);

或者,您可以考虑在实例化子窗体时通过构造函数将数据库实例传递给子窗口。

private SomeDatabaseType database;

public YourChildForm(SomeDatabaseType database)
{
    this.database = database;
}

答案 1 :(得分:0)

ParentForm返回一个Form对象,该对象没有“database”属性。 只需将返回值转换为您的特定类型

MyFormType parent = (MyFormType)ParentForm;
parent.database.Remove(this.userAuth.Key);
parent.database.Add(this.userAuth.Key, newValue);

答案 2 :(得分:0)

只要您(1)将Forms.ParentForm设为内部(如果表单位于同一项目中)或database和(2),就可以像这样使用publicParentForm投射到其真实类型。

你不应该这样做。如果您这样做,您将表单与特定父表单紧密耦合。这将使编写测试更加困难,并且如果您需要表单属于不同的父级(例如,在其他地方重新使用它),将使以后更改代码变得更加困难。更好的方法是通过构造函数将database的引用注入到表单中。