你能在c#中使用变量中包含的数据调用表单对象吗?



对于我目前正在工作的项目,我需要能够调用一个变量,其名称(或部分名称)我已存储在字符串变量中。

例如,如果string s = "1",如果没有if语句,我将如何执行以下操作?

if(s == "1") {
    textBox1.Visible = false;
}
if(s == "2") {
    textBox2.Visible = false;
}

只有两个文本框,if语句不是太大的问题,但我不想有太多,如果我可以避免它。

您可以使用Dictionary类创建键和值之间的映射。如果您试图将整数键映射到TextBox实例,Dictionary<int, TextBox>的实例将很好地完成此任务。

Dictionary<int, TextBox> dic = new Dictionary<int, TextBox>();
dic.Add(1, textBox1);
dic.Add(2, textBox2);
int input = int.Parse(Console.ReadLine());
if (dic.ContainsKey(input))
   Console.WriteLine(dic[input].Text);
else
   Console.WriteLine("No box found!");

你不应该。但是你可以这样做:

Control userSelectedControl = Controls.Find("textBox" + space.ToString()).First();

假定这段代码是从'Form'对象本身运行的。

请注意,如果您的命名方案发生了变化(以及许多其他潜在问题),这将中断。可能有一个更好的方法,但没有更多的信息,很难说它是什么。

"Find"查找MSDN上的控件集合:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.find(v=vs.110).aspx

最新更新