如何通过变量引用对象名称?

时间:2013-04-25 14:32:16

标签: c#

我有一些代码可以打开一个sqllite数据库,获取一些街道名称,然后填充一个列表框,然后将其附加到一个组合框,这样它就可以在用户输入名称时建议名称。我想制作一个我可以调用的程序,因为它可以在不同的组合框中使用。我可以传递控件的名称,但是如何在将控件作为变量引用时修改控件的属性?

类似的东西:

string A = "cbSTreets"
[A].text = "Sets the Text for the combo box."

如果有人能指出我正确的方向,我会很感激。

3 个答案:

答案 0 :(得分:1)

不是将它作为控件的名称传递,为什么不直接传递控件(特别是如果它们都是组合框和相同的类型?)

或者,如果由于某种原因你不能自己传递控件,你可以设置一些像字典这样的数据结构,如果你需要使用字符串名称:

Dictionary<string, ComboBox> comboBoxes = new Dictionary<string, ComboBox>();

//Use the string you want to refer to the combobox and the combobox item itself
comboBoxes.Add("bcbsTreets", comboBox1); 

//Use the name as defined in the previous step to get the reference to the combobox and
//set the text
comboBoxes["bcbsTreets"].Text = "whatever";

答案 1 :(得分:1)

您可以尝试这样的事情:

private void SetText(List<string> streets, ComboBox cb)
{
    cb.DataSource = streets;
}

当然,您需要从数据库填充街道并传入要填充的ComboBox控件。如果您愿意,可以使用其他集合,但ComboBox数据源需要实现IList接口。

答案 2 :(得分:0)

这只能通过反思来实现,应该避免!

你应该这样做。

有关如何使用反射执行此操作的解决方案,请查看此处:How to access class member by string in C#?