0

そのため、親フォームから子フォームのパブリックメンバー変数にアクセスしようとしています。フォームには、変数にアクセスしようとしているpublicgetプロパティがあります。変数が私の子フォームでどのように定義されているかを次に示します。

    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;

明確にするために:フォームから継承するタイプ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 に答える