代码之家  ›  专栏  ›  技术社区  ›  JamesHoux

什么会导致WinFormsrichTextBox.DataBindings.Add()引发空引用异常?

  •  2
  • JamesHoux  · 技术社区  · 6 年前

    问题代码是:

    private void FormMain_Load(object sender, EventArgs e)
    {
        Binding myBinding = new Binding("Text", _gizmo, nameof(_gizmo.MyProp));
        richRmDesc.DataBindings.Add(myBinding); //NullReference exception occurs on this line
    }
    

    • myBinding不为空。
    • _gizmo是一个全新的gizmo对象。不是空的。
    • _gizmo.MyProp是一个字符串。里面有文字。
    • 偶数richRmDesc.数据绑定不为空。我可以检查所有的田地 数据绑定成员的属性没有问题。

    我试图尽可能简化我的表单和启动代码,而不是完全摧毁我在其上构建的一切(我接下来将尝试,但这将是缓慢和痛苦的)。

    有人知道为什么我在数据绑定行上得到一个空引用异常,而这些项都不是空的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   JamesHoux    6 年前

    所以我 思想

    在设计器生成的form类中,我将罪魁祸首简化为以下行:

    this.richRmDesc.TextChanged += new System.EventHandler(this.RichDesc_TextChanged);
    

    因此,当我查看RichDesc_TextChanged事件方法时,我发现它正在调用另一个引用null集合的方法,因为它尚未初始化。这在某种形式上是普通的逻辑。

    我猜调试器无法检测到这个事件错误,因为它发生在另一个线程上???真的不确定。欢迎评论。