Как в .Net по объекта->аттрибутам, определить состояние "креста красного", "смерти GDI"?

Если в System::Windows::Forms::Panel, в BackgroundImage подключить файл .ico, то от не поддержки расширения, появится красный крест. Чтобы объект восстанавливать только в случае ошибки, то нужно его определить. Это точно не:

  1. IsDisposed
  2. IsAccesability

Ответы (1 шт):

Автор решения: Alexander Petrov

Когда компонент не может отрисовать изображение в событии OnPaint, выбрасывается исключение, после чего на этом компоненте отрисовывается красный крест.
Предлагаю попробовать следующий код:

class RobustPanel : Panel
{
    public bool RedXDetected { get; set; }

    protected override void OnPaint(PaintEventArgs e)
    {
        try
        {
            base.OnPaint(e);
            //RedXDetected = false;
        }
        catch
        {
            RedXDetected = true;
            //throw;
        }
    }
}

После добавления изображения на панель проверяем свойство RedXDetected.

Нужно ли сбрасывать свойство в false при успешной отрисовке - решать вам. Удалите комментарий или делайте это вручную в своём коде.
Вероятно, есть смысл повторно выбросить исключение: throw. Тоже решать вам.

→ Ссылка