我们有一个工具正在集成到我们的应用程序中。我们周围也有一些严格的边界,因为我们无法修改除扩展之外的应用程序。我在这里搜索过,我搜索了互联网,但找不到任何有关此问题的帖子。
我有一个包含ListView的Windows窗体,我们的用户要求我们创建一个复选框以选择/取消全选。我有复选框状态更改时的事件处理程序,并调用例程将所有内容设置为Selected。
private void SelectAllEventHandler(object sender, EventArgs e)
{
ChangeState(RadCapListView, SelectAllRadcap.Checked);
}
private void ChangeState(SWF.ListView control, bool state)
{
if (control.CheckBoxes)
{
control.Items.OfType<SWF.ListViewItem>().ToList()
.ForEach(item => item.Checked = state);
}
else
{
control.Items.OfType<SWF.ListViewItem>().ToList()
.ForEach(item => item.Selected = state);
}
control.Refresh();
}
进入调试模式后,所有项目都标记为已选中。 同样在控制级别,SelectedItems已正确更新。
问题在于,视觉上控件不会突出显示所选项目,就像我们的WPF表单一样。正如你在代码中看到的那样,我也尝试刷新控件,希望能够显示选中的项目,但没有快乐。
有没有人在让所选项目正确显示时解决了这个问题?
感谢!
答案 0 :(得分:2)
不要使用control.Refresh()
,请尝试control.Focus()
。