【问题标题】:Flicker When Updating Text For ListViewItems更新 ListView 项的文本时闪烁
【发布时间】:2015-02-25 02:57:25
【问题描述】:

我有多个 BackgroundWorker 组件正在下载数据,它们会根据进度更新相应的 ListViewItem。下载过程开始时,ListView 控件会剧烈闪烁。

private void btnDownload_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < videos.Count; i++)
        {
            var index = i;
            BackgroundWorker worker = new BackgroundWorker
            {
                WorkerReportsProgress = true
            };
            worker.DoWork += delegate
            {
                if (videos[index].RequiresDecryption)
                    DownloadUrlResolver.DecryptDownloadUrl(videos[index]);
                AudioDownloader audioDownloader = new AudioDownloader(videos[index], Path.Combine(Settings.Default.DownloadLocation,
                    RemoveIllegalPathCharacters(videos[index].Title) + videos[index].AudioExtension));
                audioDownloader.AudioExtractionProgressChanged += (s, args) =>
                    {
                        int num = (int)Math.Round((decimal)(85 + args.ProgressPercentage * 0.15));
                        worker.ReportProgress(num);
                    };
                audioDownloader.DownloadProgressChanged += (s, args) =>
                    {
                        int num = (int)Math.Round((decimal)(args.ProgressPercentage * 0.85));
                        worker.ReportProgress(num);
                    };
                audioDownloader.Execute();
            };
            worker.ProgressChanged += (s, args) =>
                {
                    lstQueue.Items[index].SubItems[2].Text = args.ProgressPercentage.ToString();
                };
            worker.RunWorkerAsync();
        }
    }

如何消除闪烁?我已经尝试将父表单的 DoubleBuffered 设置为 true,但没有奏效。

【问题讨论】:

    标签: c# flicker


    【解决方案1】:

    这很简单。我需要做的就是创建一个继承自 ListView 的自定义控件并在构造函数中调用 SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 2020-02-29
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多