我有一个绑定到数据源的文本框。文本框的TextChanged事件会更新另一个文本框。
问题是,我不希望显示第一个文本框,因此我将其Visible属性设置为false。
但是,现在TextChanged
事件并未触发!
我可以通过在表单加载上设置Visible=True
,Left=-100000
来解决此问题,但我想要一个合适的解决方案。
有人可以提供解释吗?
答案 0 :(得分:7)
在FormLoad事件中而不是在设计器中设置textbox.Visible = false
。它与句柄创建有关。如果在构造期间文本框不可见,则不会创建句柄。如果文本框在构造后变为不可见,则将创建句柄并发生事件。
在MSDN上查看此discussion。
答案 1 :(得分:3)
接受的答案的另一种解决方案是在Loaded上设置TextChanged监听器,这对我来说同样适用(至少在Silverlight中)并保持设计者视图应该是。
答案 2 :(得分:0)
它是什么类型的数据源?它可能有一个可以直接使用的事件,而不是使用文本框来监听更新。
答案 3 :(得分:-1)
如果Visible
等于false,则不会呈现Control
。因此它将无法发射事件。
相反,请将style
设置为display:none
。您可以使用Attributes
集合以编程方式设置/取消设置:
MyTextBox.Attributes.Add("style", "display: none");