2012-03-09 58 views
0

可能重复:
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

但我仍然得到一个黑色虚线选择矩形。

dotted

explorer

的问题将是...我怎样才能实现资源管理器选择矩形?

非常感谢您的帮助。

+0

感谢链接@AVIDeveloper。 – 2012-03-10 01:35:18

回答

2

根据AVIDeveloper提供的链接中的评论。

虽然ShowFocusCues本身没有工作,这MSDN页上列出的WM_CHANGEUISTATE 使我正确的答案。通过发送一个 WM_CHANGEUISTATE消息与UISF_HIDEFOCUS我能够摆脱 焦点矩形。 - Telanor 04月22日在'10 17:11

我试图找到有关此消息的一些信息和eventualy看到了这个帖子: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获取焦点时将出现相同的黑色虚线选择矩形。

我试着解释我能做到的最好,因为我不是一个流利的英语发言者,我会等待如果有人在接受我的答案前有更好的答案。