Серый UserControl, если включен = false во время разработки - PullRequest
0 голосов
/ 16 апреля 2019

Это мой первый вопрос, и у меня есть UserControl, который содержит другие элементы управления, такие как label и picturebox. Если я отключу UserControl, другие элементы управления также должны быть отключены во время разработки. Это означает, что если я отключу UserControl, изображение будет мгновенно затенено.

Каждый раз, когда срабатывает событие «EnabledChanged», окно картинки включается или отключается, но не выделяется серым цветом во время разработки. Если я запускаю код, изображение будет серым.

private void ProgressButtonImageText_EnabledChanged(object sender, EventArgs e) {
   if (Enabled == false)    
       pictureBox1.Enabled = false;
   else
       pictureBox1.Enabled = true;
}

Я хочу, чтобы pictureBox был серым, когда я изменял свойство конструктора. Нет, если я запускаю код, только раньше! Я заметил, что событие «EnabledChanged» не запускается во время разработки, только во время выполнения. Другие события, такие как «Click», запускаются и во время разработки! Как мне достичь ожидаемого результата?

Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

Я хочу показать вам мой результат (если у вас был такой же вопрос). Я не совсем счастлив, потому что я не могу переопределить свойство «Enabled». (В комментариях к моему вопросу я написал свою «новую проблему»)

Что бы ..

Прежде всего я создал новое свойство

private bool enabled = true;
public new bool Enabled2 {
    get {...}
    set {...}
}

Затем я изменил «сеттер» из свойства своей новой функцией:

public new bool Enabled2 {
            get { return enabled; }
            set {
                this.Enabled = enabled = pictureEdit1.Enabled = labelControl1.Enabled = value;
                if (pictureEdit1.Image != null && !enabled)
                    pictureEdit1.Image = setImageDisabled(pictureEdit1.Image);
                else
                    //buttonImage is a property which saves the "normal" image
                    pictureEdit1.Image = buttonImage;

                //without this, the Image doesn't update
                if (DesignMode)
                    Invalidate();
            }
        }

И, наконец, что не менее важно, моя функция "setImageDisabled":

    private Image setImageDisabled(Image image) {
            try {
                Image grayedImage = ToolStripRenderer.CreateDisabledImage(image);
                return grayedImage;
            } catch { return null; }
        }

Единственная причина, по которой я хочу переопределить свойство "Enabled", заключается в том, что если другой разработчик использует этот UserControl, изображение должно быть серым, если он отключает весь элемент управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...