从另一个表单访问listview项目

时间:2014-01-10 07:13:31

标签: c# listview

我们假设我有两种形式:Form1Form2。 在Form1我有一个列表视图DataVisualizationList。 如果我想使用Form1列表视图的选定项目,foreach (ListViewItem dr in DataVisualizationList.SelectedItems)可以正常使用。 如何从Form2完成同样的工作?

3 个答案:

答案 0 :(得分:2)

您可以通过公开ListView公开来实现,但不要那样做。而是在Form中为所选项目公开属性。

class Form1 : Form
{
    public ListView.SelectedListViewItemCollection ListViewSelectedItems
    {
        get { return yourListView.SelectedItems; }
    }
}

class Form2 : Form
{
    public void SomeMethod()
    {
        Form1 myForm1Instance = ...;//Get instance somehow
        var items = myForm1Instance.ListViewSelectedItems;//Use it
        foreach (var item in items)
        {
           //Do whatever
        }
    }
}

答案 1 :(得分:1)

您必须在Form1中引用Form2并让DataVisualizationList可公开访问,或在DataVisualizationList中引用Form2 }。

您可以使用成员参考。

您必须在Form2中设置Form1的引用。

Form1中的类似内容

private void button1_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2();
    f2.f1 = this;
    f2.Show();
}

然后在Form2中

public partial class Form2 : Form
{
    public Form1 f1;

    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (f1 != null)
        {
            foreach (ListViewItem dr in f1.DataVisualizationList.SelectedItems)
            {

            }
        }
    }
}

答案 2 :(得分:0)

最简单的解决方案

Form1 上的

list<your_Type> li = ListView1.items.ToList()
Form2 frm = new Form2(li);
Frm.Show();
Form2

上的

list<your_Type> li2;
Form2(List<your_Type> li)
 {
 InitializeComponent();
 li2 = li;
 }