【问题标题】:C# winform textbox.text doesn't changeC# winform textbox.text 不会改变
【发布时间】:2013-02-15 06:25:04
【问题描述】:
public partial class A : UserControl
{
  private string _x;
  public string X {
    get { return _x; }
    set { 
      this._x = value;
      this.textBox1.Text = this._x; 
  }
}
public partial class B : WinForm
{
   public B() {
     //Add usercontrol A to Groupbox1
     //Set A.X = "hello world"
   }
}
public class MainForm: WinForm
{
    public void button1_Click(....) { 
       B bForm = new B();
       bForm.ShowDialog();
    }
}

在设计时,我设置了 textbox1.Text="hello"。在主类中,我有一个按钮可以打开一个新表单 B,在该表单 B 上我有一个组框来添加这个用户控件 A 并更改 X 属性值 =“hello world”,但 textBox1.Text 没有在 UI 上进行更改。当我在设置 textbox1.Text = this._x 之后设置断点时,它显示值确实更改为“hello world”但它没有反映在 UI 上?

为什么?以及如何解决?

非常感谢。

【问题讨论】:

  • 您是否要更改文本框的文本,与 X 相同,而不是您必须分配 this.txtBox1.Text = this._x;
  • 谢谢。我只是更新问题。
  • 你使用dataBinding吗?
  • 不,我不使用数据绑定。想知道为什么直接设置 .Text 不起作用。
  • @user858931 显示您的`//显示表单B`代码

标签: c# winforms


【解决方案1】:

我的猜测是(因为我没有看到所有代码,这就像猜谜游戏 8)) - classB 中有 InitializeComponent 方法。由于X 属性没有DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 属性,它在InitializeComponent 方法中使用空字符串进行序列化 - 从而擦除先前显式设置的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2013-06-07
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    相关资源
    最近更新 更多