根据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获取焦点时将出现相同的黑色虚线选择矩形。
我试着解释我能做到的最好,因为我不是一个流利的英语发言者,我会等待如果有人在接受我的答案前有更好的答案。
感谢链接@AVIDeveloper。 – 2012-03-10 01:35:18