【问题标题】:TextBox TextChanged event does not fire when Visible = False?当 Visible = False 时不会触发 TextBox TextChanged 事件?
【发布时间】:2011-03-06 16:56:08
【问题描述】:

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

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

但是,现在TextChanged 事件不会触发!

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

谁能解释一下?

【问题讨论】:

  • 哪种文本框:WinForms、HTML 或 WPF?

标签: c# winforms data-binding textbox textchanged


【解决方案1】:

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

改为将style 设置为display:none。您可以使用Attributes 集合以编程方式设置/取消设置:

MyTextBox.Attributes.Add("style", "display: none");

【讨论】:

  • 对不起,我说的是winforms。将标签添加到问题中。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    请参阅 MSDN 上的 discussion

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 谢谢,这对我有用,因为我的控件位于弹出窗口内(因此在打开之前不会显示),因此使用接受的答案没有效果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      相关资源
      最近更新 更多