假设我有一个填充了项目的listBox,但其中一些是重复的。但是,我不想简单地删除它们,而是想用颜色突出显示它们。
这是我到目前为止的代码:
void btnAddSelectedItem_Click(object sender, EventArgs e)
{
List<ListItem> itemsToAdd= new List<ListItem>();
foreach (ListItem listItem in lstbxFromUserProjects.Items)
{
if (listItem.Selected)
itemsToAdd.Add(listItem);
}
foreach (ListItem listItem in itemsToAdd)
{
if (!lstBoxToUserProjects.Items.Contains(listItem))
{
lstBoxToUserProjects.Items.Add(listItem);
}
}
}
我如何改善这个以添加项目,但是为它们着色?所有相同的颜色,但所有重复的颜色必须着色,其他一切都不需要着色。
如果我不够清楚,我很抱歉,如果有人认为有必要,我可以更好地解释。
提前谢谢,伙计们。
答案 0 :(得分:1)
你可以尝试这样做:
首先,在ListItem类中添加属性以指示项是否重复:
public class ListItem
{
....
public bool IsDuplicate { get; set; }
....
}
其次,在buttonAddSelectedItem中单击,标记重复项:
....
foreach (ListItem listItem in itemsToAdd)
{
if (lstBoxToUserProjects.Items.Contains(listItem)) listItem.IsDuplicate = true;
lstBoxToUserProjects.Items.Add(listItem);
}
....
然后,您可以根据IsDuplcate属性正确设置背景颜色。例如,使用样式触发器:
<ListBox>
....
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsDuplicate" Value="True" >
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
....
</ListBox>