【问题标题】:WinForms ListView.HideSelection property has no effect?WinForms ListView.HideSelection 属性没有效果?
【发布时间】:2011-04-17 17:38:16
【问题描述】:

我正在开发一个应用程序,其中列表视图用于选择要显示的数据集。当用户单击列表项时,主视图会使用与所选项目关联的数据进行更新,并且 ListView 控件会失去焦点。失去焦点后,即使我已将 HideSelection 显式设置为 false,控件也会停止突出显示所选项目。

According to MSDN: "如果控件失去焦点时选定项未突出显示,则为 true;如果控件失去焦点时选定项仍突出显示,则为 false。默认为 true。"

这是一个错误,还是我遗漏了什么?我们正在使用 .NET 2.0 版。 (是的,我已经检查过该属性未在设计器生成的代码之外的任何地方设置)


编辑:显然选择突出显示,尽管非常微妙。查看属性列表后,当控件没有焦点时,我看不到更改突出显示颜色的方法。有任何想法吗?谢谢。

【问题讨论】:

  • 您需要所有者绘图来更改所选行的颜色。或者您可以使用已经知道如何执行此操作的 ObjectListView。

标签: c# .net winforms listview .net-2.0


【解决方案1】:

你确定这不仅仅是真的,真的很难看到。在我的屏幕上,区别是白色与“真正的淡灰色”——非常微妙。如果您在调查时更改ListView 的背景颜色会更明显(另外,请尝试调低 VDU 亮度)。

如下图;实际上选择了“def”。

【讨论】:

  • 哈,你说得对!当我从不同的角度看我的显示器时,它看起来很清楚。多么愚蠢。我想您不知道当控件没有焦点时更改选择颜色的方法?
  • @Martin - 不,我没有;对不起。
  • 那么我可能不得不求助于某种形式的自定义渲染。无论如何,谢谢 - 你让我很头疼,试图弄清楚为什么它没有出现! :)
  • 我会接受你的解决方案,因为它回答了我原来的问题,因为如果不自定义 ListView 的呈现,似乎没有办法完成我想要做的事情。感谢您的帮助。
  • 我刚刚遇到了同样的问题并进行了各种背景颜色选择我碰巧发现如果背景颜色设置为“控制”,它会变为标准的“蓝色”选择突出显示。
【解决方案2】:

某些 LCD 显示器确实在显示足够鲜明的灰色时存在问题。这是一个系统设置,会影响所有程序,您不能只为自己更改它。鉴于这确实是您的显示器的问题,没有理由不只是通过更改系统颜色来解决它。

使用控制面板 + 显示屏。在 Win7 上单击个性化、窗口颜色、高级外观设置。在对话框中选择“禁用项目”。

【讨论】:

  • 有趣的是,除了列表视图之外,这基本上改变了每个非活动控件的外观。我坚持使用本地化的 Windows 版本,所以我可能选择了错误的设置。
  • 这正是我的问题!感谢这篇文章。我继承了一个项目,该项目使用了一些非常奇怪和神秘的视觉更新机制,并且在思考之前,我一直在努力解决似乎是对 HideSelection 属性的某种覆盖或回避(此代码中非常现实的可能性)的问题将表格滑到我的另一台显示器上。果然,残疾着色在那里,隐约可见。即使知道这是问题所在,无论我使用哪种对比度 + 亮度组合,我仍然无法在主显示器上显示默认的禁用颜色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多