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

本文关键字:对象 引用 何通过 变量 | 更新日期: 2023-09-27 18:11:04

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

类似:

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";

你可以尝试这样做:

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

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

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

你应该按正常方式做。

关于如何使用反射的解决方案,请查看这里:如何在c#中通过字符串访问类成员?