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

C# 如何通过变量引用对象名称?,c#,C#,我有一些代码,可以打开sqllite数据库,获取一些街道名称,并填充一个列表框,然后将其附加到组合框中,以便在用户键入名称时,它可以建议这些名称。我想做一个过程,我可以调用它,因为它将用于不同的组合框。我可以将控件的名称传递给它,但如何在将控件作为变量引用时修改其属性 比如: string A = "cbSTreets" [A].text = "Sets the Text for the combo box." 如果有人能给我指出正确的方向,我将不胜感激。与其将其作为控件名传递,为什么不直接传

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

比如:

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

如果有人能给我指出正确的方向,我将不胜感激。

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

或者,如果由于某种原因无法传递控件本身,如果需要使用字符串名称,可以使用数据结构(如字典)设置一些内容:

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";
字典组合框=新建字典();
//使用要引用组合框和组合框项本身的字符串
添加(“bcbsTreets”,comboBox1);
//使用上一步中定义的名称获取对组合框和
//设置文本
组合框[“bcbsTreets”].Text=“任意”;

您可以尝试以下方法:

private void SetText(List<string> streets, ComboBox cb)
{
    cb.DataSource = streets;
}
private void SetText(列出街道、组合框cb)
{
cb.DataSource=街道;
}

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

这只能通过反射实现,应该避免

你应该用正常的方法来做


有关如何使用反射的解决方案,请参见此处:

为什么要传递名称?为什么不直接传递一个对控件本身的引用呢?这就是为什么我问,我不知道如何传递控件本身。那太好了。我想你的术语弄错了。。。它实际上被称为“反射(barf)”,我学习了如何将控件传递给方法。谢谢大家的指导。我只是想知道你能做到这一点以及它的名字。