如何将列表值从一个类传递到C#中的其他表单?

时间:2013-06-17 05:58:49

标签: c# winforms

其实我有3个表单,还有一个类,类(ReadXMLToEcasWindow),我在其中定义了列表

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

从button_click 上的表单1,将弹出 form2 , 在form2中我正在函数

下向List添加值
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(); 
}

3 个答案:

答案 0 :(得分: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(); 

然后在应用程序内的任何位置访问持有者值。

答案 1 :(得分:0)

一个简单的方法:

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

答案 2 :(得分:0)

实现这一目标的方法很多,最明显的方法是:

表单2上的公共方法,在初始化表单2之后从开启窗体中调用它

或者,为表单2创建另一个接受列表作为输入的构造函数,并在初始化表单2时使用此构造函数