如何将字符串变量转换为CheckBox对象C#中的名称

如何将字符串变量转换为CheckBox对象C#中的名称,第1张

概述我想在我的代码中更改现有CheckBox对象的属性: string checkBoxName = "checkBox" + Convert.ToString(index); Object objCheckBox = checkBoxName; CheckBox myCheckBox = objCheckBox as CheckBox;if (words[1] == "-1") 我想在我的代码中更改现有CheckBox对象的属性:

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#中的名称所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1049398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存