我们假设我有两种形式:Form1
和Form2
。
在Form1
我有一个列表视图DataVisualizationList
。
如果我想使用Form1
列表视图的选定项目,foreach (ListViewItem dr in DataVisualizationList.SelectedItems)
可以正常使用。
如何从Form2
完成同样的工作?
答案 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;
}