Как в .NET по атрибутам объекта определить состояние "красного креста" (ошибку GDI)?

Рейтинг: 0Ответов: 1Опубликовано: 25.04.2023

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

  1. IsDisposed
  2. IsAccesability

Как определить наличие данной ошибки?

Ответы

▲ 0

Когда компонент не может отрисовать изображение в событии 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. Тоже решать вам.