可能重复:
How can I remove the selection border on a ListViewItem
我正在使用以下代码使Listview使用Windows 7本机外观并防止闪烁。
Windows 7 Native Look for .NET ListView
http://geekswithblogs.net/CPound/archive/2006/02/27/70834.aspx
但我仍然会得到一个黑色虚线选择矩形。
问题是......如何实现资源管理器选择矩形?
非常感谢你的帮助。
答案 0 :(得分:2)
根据AVIDeveloper提供的链接中的评论。
虽然ShowFocusCues本身不起作用,但WM_CHANGEUISTATE 在那个MSDN页面上列出的我找到了正确的答案。发送一个 带有UISF_HIDEFOCUS的WM_CHANGEUISTATE消息我能够摆脱它 焦点矩形。 - Telanor 2010年4月22日17:11
我试图找到有关此邮件的一些信息,并最终看到了这篇文章:http://cboard.cprogramming.com/csharp-programming/128345-listview-remove-focuscues.html#post958690
因此,我们需要将WM_CHANGEUISTATE消息发送到构造函数中的ListView
SendMessage(Handle, 0x127, 0x10001, 0);
我们只会覆盖OnSelectedIndexChanged和OnEnter事件。
protected override void OnSelectedIndexChanged(EventArgs e)
{
base.OnSelectedIndexChanged(e);
SendMessage(Handle, 0x127, 0x10001, 0);
}
protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
SendMessage(Handle, 0x127, 0x10001, 0);
}
如果不重写OnEnter事件,当ListView获得焦点时,将出现相同的黑色虚线选择矩形。
我试着用最好的解释,因为我不会说一口流利的英语,如果有人在接受我之前有更好的答案,我会等待。