4

我有一个绑定到数据源的文本框。文本框的 TextChanged 事件更新另一个文本框。

问题是,我不想显示第一个文本框,所以我将其 Visible 属性设置为 false。

但是,现在TextChanged事件没有触发!

Visible=True我可以通过在表单加载时设置,来解决它Left=-100000,但我想要一个合适的解决方案。

任何人都可以提供解释吗?

4

4 回答 4

8

textbox.Visible = false在 FormLoad 事件中而不是在设计器中设置您的。它与句柄创建有关。如果在构造过程中文本框不可见,则不会创建句柄。如果文本框在构造后不可见,则句柄将已创建并且将发生事件。

请参阅 MSDN 上的此讨论

于 2010-06-24T13:41:53.787 回答
3

已接受答案的另一种解决方案是在 Loaded 上设置 TextChanged 侦听器,这对我来说是一样的(至少在 Silverlight 中)并保持设计器视图应有的状态。

于 2011-03-14T13:57:37.110 回答
0

它是什么类型的数据源?它可能有一个您可以直接使用的事件,而不是使用文本框来侦听更新。

于 2010-06-22T09:06:12.977 回答
-1

如果Visible等于 falseControl则不呈现。因此它将无法触发事件。

相反,将 设置styledisplay:none。您可以使用集合以编程方式设置/取消设置Attributes

MyTextBox.Attributes.Add("style", "display: none");
于 2010-06-22T08:23:30.753 回答