我有4 ListView
s
第一个ListView
是主要的。它包含自定义用户控件 - 每个UserControl
都有Image
和Label
。
您可以使用以下代码将主ListView中的项添加到任何其他3个ListView:
foreach (WindowItem wi in listView1.SelectedItems)
{
listView2.Items.Add(wi.Clone());
}
Custom UserControl具有以下功能:
public WindowItem Clone()
{
return new WindowItem(window);
}
它的作用是根据原始内容返回新的UserControl。
我想以某种方式链接它们,所以如果我更新orignial项的Image
/ Label
,它还会更新其他ListView
s中的类似项
现在,我正在做的是当我需要更新其他项目时,我使用循环检查项目是否与更新的项目匹配,如果他们这样做,我也会更新它们 - 我希望/相信有更好的方法...
答案 0 :(得分:1)
您可以在WindowItem中创建一个在更改图像/标签时引发的事件。 从那里你只需要克隆的控件来监听事件并更新通话。
以下内容: 创建活动:
public delegate void DataUpdatedEvent(Image newimage, string newlabel);
public event DataUpdatedEvent DataUpdated;
创建一个通知方法,只要更改了图像或标签,就会调用该方法:
private void NotifyDataChanged()
{
if (DataUpdated != null) DataUpdated(this.Image, this.Label);
}
另外还有一个方法,用于克隆控件在引发事件时调用:
public void UpdateData(Image newimage, string newlabel)
{
this.Image = newimage;
this.Label = newlabel;
}
然后在创建克隆时,请让他们收听:
foreach (WindowItem wi in listView1.SelectedItems)
{
WindowItem newWi = wi.Clone();
wi.DataUpdated += new WindowItem.DataUpdatedEvent(newWi.UpdateData);
listView2.Items.Add(newWi);
}