2

実際、私は3つのフォームと、リストを定義した1つのクラスclass(ReadXMLToEcasWindow)を持っています

public List<string> ack_line_path = new List<string>();

button_clickのフォーム 1から、フォーム2 がポップアップします。フォーム 2 内で、関数の下のリストに値を追加しています。

private void add_path_after_successful_load()
    {
        int rowcount = Ecas_config_gridview.Rows.Count;

        for (int i = 0; i < rowcount; i++)
        {
            XML_To_Ecas.ack_line_path.Add(Ecas_config_gridview.Rows[i].Cells[3].Value.ToString());
        }

        this.Hide();
    }

//once  the values got added form2 will be hidden,  again **clicking  on form1 button**  , form3 under which i want to use these list values

private void btn_ECAS_Click(object sender, EventArgs e)
{
    ECAS_WINDOW_FORM F_Ecas= new ECAS_WINDOW_FORM(this);
    F_Ecas.Show(); 
}
4

3 に答える 3

2

Windows アプリケーションの別のフォームに値を送信できる複数のオプションがあります。

1) プロパティの設定:

ECAS_WINDOW_FORM F_Ecas= new ECAS_WINDOW_FORM(this);
F_Ecas.ack_line_path = this.ack_line_path;
F_Ecas.Show(); 

2) 前に回答した方法で送信:

ECAS_WINDOW_FORM F_Ecas= new ECAS_WINDOW_FORM(this);
F_Ecas.setYourList(list);
F_Ecas.Show(); 

3) 値を保持する静的クラスを構築します。アプリケーションのどこからでも静的クラスの値にアクセスできます。

static class Holder
{
   public static List<string> ack_line_path = new List<string>();
}

ホルダー値の設定

ECAS_WINDOW_FORM F_Ecas= new ECAS_WINDOW_FORM(this);
Holder.ack_line_path = this.ack_line_path;
F_Ecas.Show(); 

次に、アプリケーション内の任意の場所でホルダー値にアクセスします。

于 2013-06-17T06:34:19.440 に答える
0

これを達成するには多くの方法がありますが、最も明白な方法は次のとおりです。

フォーム 2 の初期化後にオープナー フォームから呼び出すフォーム 2 のパブリック メソッド

または、リストを入力として受け入れるフォーム 2 用の別のコンストラクターを作成し、フォーム 2 を初期化するときにこのコンストラクターを使用します。

于 2013-06-17T06:27:41.670 に答える
0

簡単な方法はどうですか:

 ECAS_WINDOW_FORM F_Ecas= new ECAS_WINDOW_FORM(this);
 F_Ecas.setYourList(list);
 F_Ecas.Show(); 
于 2013-06-17T06:12:52.293 に答える