Выбор элемента в PropertyGrid вызывает мерцание пользовательского интерфейса - PullRequest
0 голосов
/ 16 апреля 2020

Я разработал приложение WinForms с несколькими (вложенными) таблицами TableLayoutPanel, содержащими фоновые изображения и цвета, указывающие состояние аппаратных компонентов. Я добавил PropertyGrid для отображения содержимого указанного c объекта с помощью ComponentModel.

Пример:

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?

...