c# - 如果在设计期间启用 = false,则灰色 UserControl 输出
问题描述
这是我的第一个问题,我有一个 UserControl,其中包含标签和图片框等其他控件。如果我禁用 UserControl,其他控件也应该在设计时禁用。这意味着:如果我禁用 UserControl,图片框应该立即变灰。
每次“EnabledChanged”事件触发时,图片框都会启用或禁用,但在设计时不会灰显。如果我运行代码,图片框是灰色的。
private void ProgressButtonImageText_EnabledChanged(object sender, EventArgs e) {
if (Enabled == false)
pictureBox1.Enabled = false;
else
pictureBox1.Enabled = true;
}
当我更改设计器的属性时,我希望图片框变灰。如果我运行代码,则不会,仅在之前!我注意到“EnabledChanged”事件不会在设计时触发,只会在运行时触发。其他事件,如“点击”也会在设计时触发!我怎样才能达到预期的结果?
谢谢。
解决方案
我想向您展示我的结果(如果您有同样的问题)。我并不完全高兴,因为我无法覆盖“启用”属性。(在我的问题下的评论中,我写了我的“新问题”)
任何..
首先,我创建了一个新属性
private bool enabled = true;
public new bool Enabled2 {
get {...}
set {...}
}
然后我用我的新函数修改了属性中的“setter”:
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; }
}
我要覆盖“启用”属性的唯一原因是,如果其他开发人员使用此用户控件,如果他禁用整个控件,图片应该变灰。
推荐阅读
- c# - 如何从 SQL 中的两个表中检索数据并填充 ASP 网页中的文本框?
- sql-server - SQL XML . 修改语法
- jestjs - 测试 react-final-form 提交
- angular - Ionic - 在多个页面中工作的注销功能
- python - 如何在按属性分组时查询对象集合
- docker - Hadoop 与 docker 运行“hdfs dfs -put”错误
- backup - 恢复centos“/”分区回来的问题
- sql - 交叉连接表以查看一个表中的哪些合作伙伴有另一个表中的报告
- python - 在测试和训练数据集中使用基于时间的拆分来拆分数据
- python - 在辅助监视器中打开 Python CEF 应用程序