Я разработал приложение 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?