我在表单上有一个datagridview,其中包含一个关联的SelectionChanged事件。
当所选行包含“附件”时,btnComments控件的背景颜色应变为黄色,如下所示:
int noAttachments = 1;
if (noAttachments > 0)
btnAttachments.BackColor = Color.Yellow;
else
btnAttachments.BackColor = normalColour;
btnAttachments.Invalidate();
代码按预期工作,但Invalidate()调用什么都不做!即按钮的颜色不会改变!
任何想法为什么?
答案 0 :(得分:1)
我不相信这是对Invalidate的调用。如果有的话,这里不需要Invalidate,假设这个按钮是一个控件。当您更改任何控件的状态时,控件负责使自身无效。因此,当您更改控件的BackColor属性时,它应该使自身无效,这将触发重绘。
你确定btnAttachments的控件支持BackColor属性(我假设它是常规Button,但可能不是)?
请求更多信息:
我也会想到,因为这是一个DataGridView,所以实际上并没有对用于呈现按钮的正确控件的引用。 DataGridView有一个模板概念,用于控制行/列/单元格,然后是它使用的实际实例。
您需要显示如何获取该特定行/单元格/列的按钮。
答案 1 :(得分:0)
那应该有用。理想情况下,更改BackColor属性时不需要调用Invalidate。
你确定normalColor!= Color.Yellow?