Windows窗体列表视图无法直观显示所选项目

时间:2018-02-14 20:30:07

标签: windows winforms listview c#-4.0

我们有一个工具正在集成到我们的应用程序中。我们周围也有一些严格的边界,因为我们无法修改除扩展之外的应用程序。我在这里搜索过,我搜索了互联网,但找不到任何有关此问题的帖子。

我有一个包含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表单一样。正如你在代码中看到的那样,我也尝试刷新控件,希望能够显示选中的项目,但没有快乐。

有没有人在让所选项目正确显示时解决了这个问题?

感谢!

1 个答案:

答案 0 :(得分:2)

不要使用control.Refresh(),请尝试control.Focus()