gpt4 book ai didi

c# - 如何在 C# 中将字符串变量转换为复选框对象名称

转载 作者:行者123 更新时间:2023-11-30 13:22:56 26 4
gpt4 key购买 nike

我想在我的代码中更改现有 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

你不能那样做。以下行将 null 分配给 myCheckBox,因为 objCheckBoxstring 类型而不是 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 方法。

关于c# - 如何在 C# 中将字符串变量转换为复选框对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16713819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com