【问题标题】:How do I find out whether a control is currently invalidating?如何确定控件当前是否正在失效?
【发布时间】:2009-03-17 13:37:11
【问题描述】:
我正在编写一个自定义的DataGridView 单元类来承载一个控件。我正在收听Invalidated 事件以了解我是否应该重新定位和重新绘制单元格,但我得到了循环,因为重新定位单元格会使其他托管单元格无效,然后使第一个单元格无效,依此类推。我不想使用静态成员来避免循环,因为如果它们曾经一起使用,那不会防止由相似但不相关的单元类引起的循环。所以我需要检查网格当前是否失效。我该怎么做?
【问题讨论】:
标签:
c#
.net
winforms
datagridview
invalidation
【解决方案1】:
您不必“收听”无效事件。当用户控件失效时,会自动调用 onpaint。
可能有更好的方法来解决您的最终问题(绘制您的自定义数据网格视图)。您可以尝试发布一个关于您的实施的详细问题,并询问一些关于如何实施的想法,这样您就不必解决这些(看似奇怪的)问题。
【解决方案2】:
听起来您想覆盖 DataGridViewCell 类的 Paint 成员,而不是尝试侦听和响应 Invalidated 事件。基类会为您处理这些,并直接将图形对象和位置信息提供给 Paint 方法