使用表单二中表单一的对象列表

时间:2014-07-17 05:37:00

标签: c# winforms list object

我有两个窗体

 Form1 and Form2

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

 namespace myInterface
 {
    public partial class Form2 : Form
    {
       public Form2()
       {
           InitializeComponent();
        }

    }
 }

我有一个这样的课程

  class item   
  {
     public string itemID { get; set; }
     public string itemName { get; set; }
     public decimal itemPrice{ get; set; }
  }

我在Form1

中创建并使用了这样的列表
List<item> myItems = new List<item>();

我已经在Form1

的操作中向myItems添加了项目

我想浏览myItems并获取Form2中myItems中的项目详细信息。 我怎样才能做到这一点? 我知道如何浏览列表,显示如何从Form2访问列表myItems绰绰有余。

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作: -

Public List<item> items;

 public Form2(List<item> items)
       {
           this.items = items;
           InitializeComponent();
        }

这意味着您将值传递给Form2的构造函数,您可以访问Form2中的列表

答案 1 :(得分:0)

你可以像那样实现它

public partial class Form1 : Form {
  private List<item> myItems = new List<item>();

  // Declare public property to let Form2 have access to myItems
  public List<item> MyItems {
    get {
      return myItems;
    }
  }
  ...
}
...

public partial class Form2 : Form {
  public void DoSomethingWithMyItems() {
    // First you have to find out Form1 if you don't have it yet
    Form1 myForm = Application.OpenForms.OfType<Form1>().FirstOrDefault();

    // Form1 has not been found
    if (null == myForm)
      return;

    // Get the list from Form1 via public property MyItems
    List<item> myItems = myForm.MyItems;

    //TODO: Do what you want with myItems
  }
  ...
}

答案 2 :(得分:0)

只有在Form1打开时才能访问该列表。

使用以下代码:

private void Form2_Load(object sender, EventArgs e)
{
    var form1 = Application.OpenForms.OfType<Form1>().FirstOrDefault();
    if(form1 !=null)
    {
       //form1.myItems
    }
}

但请确保Form1已打开且myItems属性已公开。