如果在设计期间启用,则灰色UserControl熄灭=否

时间:2019-04-16 08:07:37

标签: c# winforms

这是我的第一个问题,我有一个UserControl,其中包含其他控件,例如标签和图片框。如果禁用UserControl,则在设计时也应禁用其他控件。这意味着:如果禁用UserControl,则图片框应立即变灰。

每次触发“ EnabledChanged”事件时,图片框都会启用或禁用,但在设计时不会变灰。如果我运行代码,则图片框为灰色。

git show -s --pretty='format:%ci %s %h' $(git branch -r) | sort -r | head -n 1

当我更改设计器的属性时,我希望pictureBox变灰。如果我运行代码,则不会,仅在执行之前!我注意到“ EnabledChanged”事件不会在设计时触发,而只会在运行时触发。其他事件(例如“点击”)也会在设计时触发! 我怎样才能达到预期的结果?

谢谢。

1 个答案:

答案 0 :(得分:0)

我想向您展示我的结果(如果您有相同的问题)。我并不完全满意,因为我无法覆盖“已启用”属性。 (在我的问题下的评论中,我写了“新问题”)

随便..

首先,我创建了一个新属性

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; }
        }

我要覆盖“已启用”属性的唯一原因是,如果其他开发人员使用此UserControl,则如果他禁用了整个控件,则该图片应显示为灰色。