无效无效

时间:2009-03-27 16:09:28

标签: c# winforms

我在表单上有一个datagridview,其中包含一个关联的SelectionChanged事件。

当所选行包含“附件”时,btnComments控件的背景颜色应变为黄色,如下所示:

   int noAttachments = 1;

   if (noAttachments > 0)
       btnAttachments.BackColor = Color.Yellow;
   else
       btnAttachments.BackColor = normalColour;

   btnAttachments.Invalidate();

代码按预期工作,但Invalidate()调用什么都不做!即按钮的颜色不会改变!

任何想法为什么?

2 个答案:

答案 0 :(得分:1)

我不相信这是对Invalidate的调用。如果有的话,这里不需要Invalidate,假设这个按钮是一个控件。当您更改任何控件的状态时,控件负责使自身无效。因此,当您更改控件的BackColor属性时,它应该使自身无效,这将触发重绘。

你确定btnAttachments的控件支持BackColor属性(我假设它是常规Button,但可能不是)?

请求更多信息:

我也会想到,因为这是一个DataGridView,所以实际上并没有对用于呈现按钮的正确控件的引用。 DataGridView有一个模板概念,用于控制行/列/单元格,然后是它使用的实际实例。

您需要显示如何获取该特定行/单元格/列的按钮。

答案 1 :(得分:0)

那应该有用。理想情况下,更改BackColor属性时不需要调用Invalidate。

你确定normalColor!= Color.Yellow?