0

データを送信するボタンと、フォームを見るだけのメニューストリップボタンからフォームにアクセスしようとしていますが、データは転送されません。

データを送信するために、クラス名は次のとおりです。

    public xSecForm(string dataRecieved)
    {
        InitializeComponent();

        xSavedList.Text = dataRecieved;
    }

これにより、最初のボタンでデータを送信できます。

置くように言っている他のヘルプを見たことがあります

    xSecForm f2 = new xSecForm()
    f2.Show();

メニューボタンで、データを渡さずにウィンドウを表示するだけですが、フォームの最後にある (string dataRecieved) のため、エラーが発生し続けます。

データの送信方法を変更せずにそれを行う方法があることを望んでいました。

4

1 に答える 1

3

いくつかの方法を試すことができますが、それぞれに利点と欠点があります。

1) 2 番目のフォームに 2 つのコンストラクターを使用できます。1 つはデフォルト (データを渡さない) で、もう 1 つは文字列を渡すことができます。

public xSecForm(string dataReceived)
{
    InitializeComponent();
    xSavedList.Text = dataReceived;
}

public xSecForm()
{
    InitializeComponent();
}

このようにして、文字列を送信するかどうかに関係なく、2 番目のフォームの新しいインスタンスを作成できます。欠点は、最初にオブジェクトを作成するときにしかデータを渡すことができないことです。

2) 2 番目のフォームでパブリック プロパティを作成して、最初のフォームがそれ自体にデータを挿入できるようにします。あなたの2番目のフォームで:

public string SavedListData
{
    set { xSavedList.Text = value; }
    get { return xSavedList.Text; }
}

次に、メインフォームで(デフォルトのコンストラクターがあると仮定して)

xSecForm f2 = new xSecForm();
f2.SavedListData = "asdf";
f2.Show();

このアプローチの利点は、2 番目のフォームを読み込んで使用した後でも、いつでもデータを取得/設定できることです。

于 2013-08-23T02:14:50.807 に答える