我可以将List <myclass>传递给按钮单击事件吗?

时间:2016-06-02 11:42:47

标签: c# winforms list button

当点击按钮(在formA中)时,我想将另一个成员添加到List(在MainForm中)。

我有一个名为&#34; Trips&#34;其中包含两个用于存储的字符串成员。

我在MainForm中创建了一个List:

List<Trips> alltrip = new List<Trips>() { new Trips("Trip 1", "March"), 
                                          new Trips("Trip 2", "May")};

我将List传递给FormA然后我认为我可以在按钮点击事件中使用 alltrip 。但是它返回了一个错误,说它无法找到 alltrip ,所以我尝试将它传递给按钮,如下所示。

    Trips newTrip = new Trips();
    private void AddTripConfirm_Click(object sender, EventArgs e, List<Trips> alltrip) 
    {                               //I add the List here
        newTrip.Name = AddTripNametxt.Text;
        newTrip.Time = AddTripTimetxt.Text;
        alltrip.Add(newTrip);
    }

到目前为止,它看起来对我很好,但是在Designer.cs的这一行中发生了另一个错误:

 this.AddTripConfirm.Click += new System.EventHandler(this.AddTripConfirm_Click); 

它说&#34; AddTripConfirm_click&#39;匹配委托&#39; System.EventHandler。&#39;&#34;由于我对C#很陌生,我想不出任何解决方案,并努力从类似问题中找到令人满意的答案。

请帮忙。 非常感谢。

2 个答案:

答案 0 :(得分:1)

你说你把名单传递给了FormA。我假设你是通过构造函数完成的。

只需将此列表存储在FormA

的成员变量中即可
public partial class FormA : Form
{
    private List<Trips> _allTrips; // a member variable

    public FormA(List<Trips> allTrips)
    {
         // store allTrips in _allTrips
         _allTrips = allTrips;
        InitializeComponents();
    }

现在您可以通过事件处理程序中的成员变量访问列表:

private void AddTripConfirm_Click(object sender, EventArgs e) 
{                         
    Trips newTrip = new Trips();
    newTrip.Name = AddTripNametxt.Text;
    newTrip.Time = AddTripTimetxt.Text;
    _allTrips.Add(newTrip); // use the member _allTrips
}

由于您存储了对列表的引用,因此您的主表单中也可以使用添加的行程。

答案 1 :(得分:0)

假设您在构造函数中将alltrip传递给FromA,您需要添加一个类变量来访问它,即:

private List<Trips> _alltrip;

public FormA(List<Trips> alltrip)
{
    _alltrip = alltrip;
}

然后,当您需要使用变量时,只需使用_alltrip