0

私は2つのクラスを持っています:FrmMenuFrmProperty. で、FrmProperty次のようなプロパティを作成しました。

public string ApplicationString { get; set; }

form1_load(object sender, EventArgs e)
{
    MessageBox.Show(ApplicationString);
}

FrmMenu次に、次のように、そのクラスをインスタンス化します。

FrmProperty frmp = new FrmProperty();
//Give value
frmp.ApplicationString = "1";
frmp.ShowDialog();

このコードは、 からFrmMenuに値を転送する必要がありますFrmProperty。なぜこれが機能しないのですか?メッセージ ボックスは空白です。

4

1 に答える 1

0

それで、私はこれを自分で試してみましたが、最初に注意すべきことは、提供したコードがコンパイルされないことです。あなたの例は次のとおりです。

form1_load(object sender, EventArgs e)
{
    MessageBox.Show(ApplicationString);
}

しかし、これは次のように書くほうがよいでしょう:

private void FrmProperty_Load(object sender, EventArgs e)
{
    MessageBox.Show(ApplicationString);
}

おそらくそれは自明ですが、すべてをできるだけ明確にすることが常に役立つと思います.

あなたの問題に関しては、上記を使用してコードが機能しない可能性があると私が考えることができる唯一のことは、FrmProperty_Loadメソッドを の Load イベントに接続していない場合ですFrmProperty

何かが要求しない限り、FrmProperty_Loadメソッドは実行されないため、コンストラクターにFrmProperty次を追加します。

this.Load += FrmProperty_Load;

FrmMenuクラスは変更されず、クラスは大まかFrmPropertyに次のようになります。

public partial class FrmProperty : Form
{
    public string ApplicationString { get; set; }

    public FrmProperty()
    {
        InitializeComponent();
        this.Load += FrmProperty_Load;
    }

    private void FrmProperty_Load(object sender, EventArgs e)
    {
        MessageBox.Show(ApplicationString);
    }

}
于 2013-10-21T16:40:24.493 に答える