好的,这是合约。
我有一个图表,它“监听”某些标签的文本字段,并绘制其值。它通过在TextChanged事件上添加值来实现此目的。
问题: TextChanged仅在文本实际更改时(显然)触发,而不是在为其分配新值时触发。
我需要什么: 检测标签的Text字段是否已更新(分配给)的方法,以及我必须使用的所有内容都是对Control的引用(即Label)。
我意识到TextChanged不是为此设计的,这就是为什么我想知道你们中是否有人遇到类似的问题,并找到了解决方案。
答案 0 :(得分:2)
在初始分配文本时未调用TextChanged
事件处理程序的原因是在分配了第一个文本后附加了它(设计器似乎默认按此顺序执行操作)。我会这样做:
TextChanged
调用另一种方法(UpdateGraph
)UpdateGraph
收集必要的数据并更新图表UpdateGraph
作为最后一件事
这将确保使用初始值更新图表。 >调用InitializeComponent
之后发生此呼叫非常重要。
答案 1 :(得分:1)
“setters”中的常见做法是忽略琐碎的变化,例如:
public int Foo {
get {return foo;}
set {
if(foo != value) {
foo = value;
OnFooChanged();
}
}
}
如果Text
的行为与此类似,并且您依赖所有更新导致事件,那么它可能无法正常工作。我可能会试着找到另一种方法来做你想做的事情;也许使用一个传递值的中间对象。
答案 2 :(得分:0)
您可以创建自己的控件,该控件继承自该控件并创建自己的Text属性,该属性将在分配新值时触发事件。