我写了这个方法,这样我就可以使用它而不是重复代码.但是我如何才能将cmb1(组合框名称)更改为类似cmb(i)的名称.我的意思是,如果I=10组合框名=cmb10.对于code(cmb1.Items.Add(srd.GetValue(0).ToString());).i的这一部分,想要将有关i的数字更改为i.可能吗?如果可能,请帮助我!

这就是我正在try 的方法

public void ComboText(string text,int i)
{
    try
    {
        string connectionString = @"Data Source=DESKTOP-V0HE9JH\SQLEXPRESS01;Initial Catalog=Parts_Shop;Integrated Security=True";
        SqlConnection connection = new SqlConnection(@connectionString);

        connection.Open();
        SqlCommand command = new SqlCommand("select manufacturer from Parts where item_type = '" + text + "'", connection);
        SqlDataReader srd = command.ExecuteReader();

        while (srd.Read())
        {
            cmb1.Items.Add(srd.GetValue(0).ToString());
        }

        connection.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

推荐答案

Controls集合有两个索引器重载,一个接受int,另一个接受表示控件名称的string.

var cmb = (ComboBox)Controls["cmb" + i];

如果组合框直接放置在窗体上,则此方法有效.如果将其放置在另一个控件(如面板)上,则访问此容器控件的Controls属性:

var cmb = (ComboBox)panel1.Controls["cmb" + i];

Csharp相关问答推荐

O(N)测试失败

使用C#中的Shape API从Azure目录获取所有用户

如何在NServicebus中配置学习传输的文件夹(NService bus 8)

使用特定格式的JsonConvert序列化对象

如果存在对CodeAnalysis.CSharp的引用,则不能引用netStandard2.0库

模型绑定RazorPage表单

在C#中反序列化/序列化具有混合元素顺序的XML时出现问题

Linux Docker上的.NET6在某个时间抛出后,在加密操作期间发生System.Security.Cryptography.CryptographicException:错误

我什么时候应该在Dapper中使用Connection.OpenAsync?

Celler ArgumentExpression是否期望在所有情况下都捕获允许空值的运算符?

如何使用EPPlus C#在单个单元格中可视化显示多行文字

将J数组转换为列表,只保留一个嵌套的JToken

工厂类是如何在.NET 8中注册的?

数据库操作预计影响1行,但实际影响0行; after _dbContext.SaveChanges();

如何在Cake脚本中设置MSBuild.exe的绝对路径

使用LibraryImport在多个dll中导入相同的函数

无法使用直接URL通过PictureBox.ImageLocation加载图像

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

与另一个对象位于同一位置的对象具有不同的变换位置

测试单个对象是否与Func<;T,bool>;匹配