0

メインウィンドウに変数があります

例:

public partial class MainWindow : Window
{
   internal int i;
    public MainWindow()
    {
        InitializeComponent();
    }
}

そして、私は彼を子ウィンドウで使用したいのですが、そのために私は彼を内部(同じ名前空間の2つのウィンドウ)にしますが、子ウィンドウはまだ変数を認識しません

私は何をするつもりですか?

4

1 に答える 1

0

タイプの子ウィンドウにパブリックプロパティを作成する必要がありますint。子ウィンドウを作成するときは、親ウィンドウのフィールドの値に基づいてそのプロパティを設定します。

子クラスの変数を読み取るだけでなく、変数を変更してその変更を親フォームに反映させたいようです。そのため、答えが複雑になります。

ヘルパークラスから始める必要があります。関心のあるデータはint(値型)であるため、参照型(つまりクラス)であるものが必要になります。

public class Wrapper<T>
{
    public T Value { get; set; }
}

したがって、親フォームに整数を含まないことから始めますが、代わりにこのクラスのインスタンスを使用します。

public class Form1
{
    private Wrapper<int> data = new Wrapper<int>(); //TODO give better name
    //...
}

次に、子フォームにパブリックプロパティが必要です。ではなく、intこの新しいクラスを使用します。

public class Form2
{
    public Wrapper<int> Data { get; set; }
    //...
}

次に、子クラスを作成するときに、親クラスの値に基づいてプロパティを設定します。

public void someMethod()
{
    Form2 childForm = new Form2();
    childForm.Data = data;
    childForm.Show();
}

これですべてが完了したので、親クラスと子クラスの両方がの同じインスタンスへの参照を持っていることを確認しました。したがって、インスタンスのプロパティWrapperへの変更(いずれかのクラスから)は、いずれかの参照によって「認識」されます。 。ValueWrapper

于 2012-09-11T15:38:24.630 に答える