1

私は C# 用の Visual Studio 2010 を使用しています。ビルドしたいアプリケーションをビルドする前に、いくつかのクラスとオブジェクトをいじっています。

作成したフォームには、フォーム全体で操作したいオブジェクトのインスタンスを作成する form1_load イベントがあります。

ボタンをクリックすると、オブジェクトのメソッドの 1 つを呼び出してステートメントを実行できるようにしたいと考えています。これを機能させることはできませんが、オブジェクトが現在のコンテキストに存在しないことがわかります。このオブジェクトをクリックイベントに渡して操作できるようにするにはどうすればよいですか?

public void Form1_Load(object sender, EventArgs e)
    {
        MyPerson bozo = new MyPerson("bozo",48,23);
        textBox2.Text = bozo.name;
    }

    public void button1_Click(object sender, EventArgs e)
    {

        bozo.myMethod(); // c# is saying that this object doesn't exist in the current context.
    }

クラス構造とオブジェクトは理解できますが、別の場所でそれらにアクセスするのに行き詰まることがよくあります。

4

1 に答える 1

4

オブジェクトは のローカル変数でForm_Loadあるため、そこにのみ存在します。フォームのフィールドまたはプロパティにすることができます。例えば:

private MyPerson bozo { get; set; }

public void Form1_Load(object sender, EventArgs e)
{
    bozo = new MyPerson("bozo",48,23);
    textBox2.Text = bozo.name;
}

public void button1_Click(object sender, EventArgs e)
{
    bozo.myMethod(); // now you can access it since it "lives" in the whole form
}
于 2013-07-14T21:16:42.200 に答える