visual c# form update results in flickering

前端 未结 10 1084
眼角桃花
眼角桃花 2020-12-17 21:18

I have a .net app that I\'ve written in c#. On some forms I frequent update the display fields. In some cases every field on the form (textboxes, labels, picturebox, etc) ha

10条回答
  •  暖寄归人
    2020-12-17 21:50

    You can just replace original control with custom one which has protected DoubleBuffered property to true. E.g. for ListView it would be something like this:

    internal class DoubleBufferedListView : ListView {
    
        public DoubleBufferedListView()
            : base() {
            this.DoubleBuffered = true;
        }
    
    }
    

    After that you just visit *.Designer.cs file and replace all mentions of native control with this one.

    P.S. Instead of inheriting from control you can also set this property via reflection:

    listView1.GetType().GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(lsvReport, true, null);
    

    It is not clean nor recommended but it requires no changes in *.Designer.cs files.

提交回复
热议问题