首页 > 解决方案 > 在 PropertyGrid 中选择项目会导致 UI 闪烁

问题描述

我设计了一个带有多个(嵌套)TableLayoutPanel 的 WinForms 应用程序,其中包含指示硬件组件状态的背景图像和颜色。我使用 ComponentModel 添加了一个 PropertyGrid 来显示特定对象的内容。

例子:

public class MyObject
{
    public float Voltage;

    [Category("Operation Voltage")]
    [Description("Voltage applied")]
    [DisplayName("Voltage")]
    public float Vop { get => Voltage; }
}

我将对象添加到 PropertyGrid (示例是胡说八道 - 仅用于说明)

MyObject m = new MyObject();
m.Voltage = 1.234;
propertyGrid1.SelectedObject = m;

到目前为止一切正常,直到我主动选择 PropertyGrid 中的值作为实际值,选择类别标题没有副作用)。如果我这样做,我的应用程序中的大多数 TableLayoutPanel 都会开始闪烁。

问题是由此处描述的此方法引起的(我需要用于其他目的):

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
            return cp;
        }
    }

在我认为描述该问题的本文之后我应该发布“设备上下文”。谁能指出在 PropertyGrid 的情况下如何做到这一点?

标签: c#winformspropertygrid

解决方案


推荐阅读