string checkBoxname = "checkBox" + Convert.ToString(index); Object objCheckBox = checkBoxname; CheckBox myCheckBox = objCheckBox as CheckBox;if (words[1] == "-1"){ myCheckBox.Checked = false;}else{ myCheckBox.Checked = true;}
上面的代码片段不会导致编译错误,但会导致运行时错误
Object reference not set to an instance of an object.
我该怎么办?
解决方法 我假设你在谈论WinForms你不能这样做.以下行为myCheckBox指定null,因为objCheckBox的类型为string,而不是类型CheckBox.
CheckBox myCheckBox = objCheckBox as CheckBox;
您需要做的是迭代窗体上的所有控件以找到名为checkBoxname的控件.你可以通过liNQ来做,或者你可以这样做:
Control[] controls = this.Find(checkBoxname,true);if (controls != null && controls.Length > 0){ (controls[0] as CheckBox).Checked = words[1] != "-1";}
liNQ方法可能如下所示:
Control c = (from Control c in this.Controls where c.name.Equals(checkBoxname) select c).FirstOrDefault();if (c != null){ ....}
请注意,如果CheckBox不是表单本身的直接子项,则liNQ方法将无法找到它.为了确保始终找到它,您还需要递归地搜索容器控件 – 例如:如果您找到一个Panel控件,您还需要搜索面板的子控件.
我根据评论编辑了我的代码 – 只记得Find方法.
总结以上是内存溢出为你收集整理的如何将字符串变量转换为CheckBox对象C#中的名称全部内容,希望文章能够帮你解决如何将字符串变量转换为CheckBox对象C#中的名称所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)