0

所以我试图从其父表单访问我的子表单的公共成员变量。该表单有一个公共 get 属性,我试图从中访问该变量。以下是在我的子表单中定义变量的方式:

    public partial class frmNewProduct : Form
{
    public Inventory _inventory { get; private set; }

现在让我们切换节奏并转到父表单。子窗体的实例在下面创建,您还可以看到我试图从该实例访问 _iventory 的 get 属性,但我每次都收到编译器错误。

        private void btnAdd_Click(object sender, EventArgs e)
    {
        Form newProduct = new frmNewProduct(_inventory, Mode.add);
        newProduct.Show();
        Inventory variable = newProduct._inventory;
    }

编译器错误内容如下:

错误 1“System.Windows.Forms.Form”不包含“_inventory”的定义,并且找不到接受“System.Windows.Forms.Form”类型的第一个参数的扩展方法“_inventory”(您是否缺少使用指令还是程序集引用?)

有谁知道这里有什么问题?谢谢你。

4

1 回答 1

4

您正在创建父类型 Form 的类型。您需要将其声明为派生类型frmNewProduct。例如:

frmNewProduct newProduct = new frmNewProduct(_inventory, Mode.add);
newProduct.Show();
Inventory variable = newProduct._inventory;

澄清一下:您正在向从 Form 继承的类型 frmNewForm 添加一个属性。Form 没有该属性,因此在将变量声明为 Form 类型时无法访问它。

另一个例子:

class BaseClass {
}

class DerivedClass : BaseClass {
    public int MyProperty { get; set; }
}

使用上面的代码,你不能这样做:

BaseClass base = new DerivedClass();
base.MyProperty = 12; // ERROR

..但是,您可以这样做:

DerivedClass derived = new DerivedClass();
derived.MyProperty = 12; // Works
于 2012-07-31T01:48:38.953 回答