0

我有 4ListView秒。
第一个ListView,是主要的。它拥有自定义用户控件 - 每个UserControl都有ImageLabel.

您可以使用以下代码将主 ListView 中的项目添加到其他 3 个 ListView 中的任何一个:

foreach (WindowItem wi in listView1.SelectedItems)
{
    listView2.Items.Add(wi.Clone());
}

自定义用户控件具有以下功能:

public WindowItem Clone()
{
    return new WindowItem(window);
}

它的作用是根据原始返回新的 UserControl。

我想以某种方式链接它们,所以如果我更新原始项目的Image/ Label,它也会更新其他项目中的类似ListView项目

现在,我正在做的是当我需要更新其他项目时,我使用循环来检查项目是否与更新的项目匹配,如果匹配,我也会更新它们 - 我希望/相信有更好的方法......

4

1 回答 1

1

您可以在更改图像/标签时引发的 WindowItem 中创建一个事件。从那里您只需让克隆的控件侦听事件并在调用时更新。

类似于以下内容: 创建事件:

public delegate void DataUpdatedEvent(Image newimage, string newlabel);
public event DataUpdatedEvent DataUpdated;

创建一个通知方法,每当 Image 或 Label 发生更改时,您都会调用该方法:

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);
}
于 2013-10-05T11:42:41.200 回答