相关疑难解决方法(0)

c#在更新时闪烁列表视图

我有一个定期更新的列表视图(每60秒).对我来说很烦人,每当它过时都会闪烁.使用的方法是清除所有项目,然后重新创建它们.我决定不使用新文本清除直接写入单元格的项目.这是一种更好的方法,还是有人有更好的解决方案.

c# listview flicker

50
推荐指数
6
解决办法
5万
查看次数

ControlStyles.DoubleBuffer与ControlStyles.OptimizedDoubleBuffer

ControlStyles.DoubleBufferControlStyles.OptimizedDoubleBuffer有什么区别?

ControlStyles.DoubleBuffer未显示在Intellisense下拉列表中,而ControlStyles.OptimizedDoubleBuffer实际上已列出.

MSDN文档没有立即明确区别(至少对我来说).

.net controls doublebuffered winforms

14
推荐指数
2
解决办法
6922
查看次数

在ListView控件中闪烁(OwnerDraw,Virtual)

这个问题可能被视为使用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不改变其初始行为的情况下完成所有绘画的前提条件是什么?

c# listview flicker ownerdrawn winforms

12
推荐指数
2
解决办法
6243
查看次数

无法让 ListView 停止闪烁

C# .Net 4.5

我有一个 ListView,它通过这种方法不断被不同的线程更新:

public void UpdateUI_List_SetRow(int rowNum, ListViewItem item)
{
    lock (lock_List)
    {
        try
        {
            if (this.lstStatus.InvokeRequired)
                lstStatus.Invoke(new MethodInvoker(() => lstStatus.Items[rowNum] = item));
            else
                lstStatus.Items[rowNum] = item;
        }
        catch (Exception ex)
        {
            ErrorLogging.Log(ex);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它在更新时不断闪烁。我已经尝试了 DoubleBuffered 修复(如何在更新单个 ListViewItem 的文本时防止 ListView 闪烁?)但它没有用。

抱歉,如果这是一个重复的帖子,但除了启用双缓冲之外,我找不到任何解决方案。

.net c# multithreading listview

1
推荐指数
1
解决办法
1682
查看次数