我只是想知道为什么我不能使用Forms.ParentForm类从子表单中为ParentForm成员赋值。 像:
ParentForm.database.Remove(this.userAuth.Key);
ParentForm.database.Add(this.userAuth.Key, newValue);
感谢您的任何推荐!
答案 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),就可以像这样使用public
将ParentForm
投射到其真实类型。
你不应该这样做。如果您这样做,您将表单与特定父表单紧密耦合。这将使编写测试更加困难,并且如果您需要表单属于不同的父级(例如,在其他地方重新使用它),将使以后更改代码变得更加困难。更好的方法是通过构造函数将database
的引用注入到表单中。