【问题标题】:Can I pass a List<myclass> to a button click event?我可以将 List<myclass> 传递给按钮单击事件吗?
【发布时间】:2016-10-02 03:11:36
【问题描述】:

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

我有一个名为“Trips”的类,其中包含两个用于存储的字符串成员。

我在 MainForm 中创建了一个列表:

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); 

它说“'AddTripConfirm_click' 没有重载与委托 'System.EventHandler' 匹配。”由于我对 C# 很陌生,我想不出任何解决方案,并且努力从类似问题中找到令人满意的答案。

请帮忙。 非常感谢。

【问题讨论】:

  • 你是如何将 allTrips 传递给 FormA 的?您应该在表单中保存对它的引用,以便以后访问它。

标签: c# winforms list button


【解决方案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
}

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

【讨论】:

    【解决方案2】:

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

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

    那么当你需要使用变量时,只需使用_alltrip

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2022-06-18
      • 2017-08-28
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多