如何DoubleBuffered在遭受闪烁的表单上设置控件的受保护属性?
这个问题可能被视为使用ownerdraw和virtualmode在listview中闪烁的后续行动.
我有一个ListView控件Virtual mode,我尝试执行自定义绘图.项目渲染通过以下方法覆盖完成:
protected override void OnDrawItem(DrawListViewItemEventArgs eventArgs)
Run Code Online (Sandbox Code Playgroud)
如引用的问题所述,自定义绘图会在鼠标悬停事件上引入闪烁.调试器告诉我这是由于过多的自定义绘制事件被触发而发生的.
现在 - 引用问题的接受答案告诉我们:
这是.NET的ListView中的一个错误,你不能通过双缓冲解决它.
那么,这些信息有多可靠?这真的是个错误吗?或者我们可能只是试图切断部分消息并希望它不会改变可见行为?
这是真的,如果我有我的所有者绘制例程ListViewin in Virtual Mode,我可以抑制这些Custom Draw事件并且只执行我的绘图WM_PAINT或者,也许,这在某些情况下是不正确的?
System.Windows.Forms控制能够在WM_PAINT不改变其初始行为的情况下完成所有绘画的前提条件是什么?