在循环控制中添加事件:对象引用未设置为对象的实例

本文关键字:设置 对象 实例 对象引用 控制 循环 添加 事件 | 更新日期: 2023-09-27 17:54:25

我的代码在运行时创建多个表单。这些表单使用从文本文件读取的多个控件填充。我还试图做的是创建基于另一个文本文件的控件的动作。

文本文件遵循这个模板:

ActionToPerform=(control)(trigger)(settings)

我遇到的问题是,这发生在循环中,因此事件侦听器似乎失去了作用域。通过搜索与设置文件中名称相同的当前窗体上的控件来找到要放置事件的控件。

这是我的事件监听器代码的一个例子:
myForms[locali].Controls.Find(actionObject, false).FirstOrDefault().MouseDown += new MouseEventHandler(myForms[locali].SendEmail_Event);

但是我得到错误'object reference not set to an instance of a object'。

我如何重写代码以允许我使用文件中的设置将事件添加到正确的控件?

在循环控制中添加事件:对象引用未设置为对象的实例

FirstOrDefault有可能返回null。所以在使用它之前检查它是否为空

var obj= myForms[locali].Controls.Find(actionObject, false).FirstOrDefault();
if(obj!=null){
    obj.MouseDown += new MouseEventHandler(myForms[locali].SendEmail_Event);
}