Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何引用在运行时用c创建的控件?_C#_Runtime - Fatal编程技术网

C# 如何引用在运行时用c创建的控件?

C# 如何引用在运行时用c创建的控件?,c#,runtime,C#,Runtime,我的数据库中有两个表,一个保存物品,另一个保存价格。我设计了一个表单,它以复选框的形式检索事物名称,并针对它们添加文本框。它们都是在窗体加载时在运行时创建的。它们都在相应的循环中命名,当表单加载时,我可以看到它们以我想要的方式排列。但是我不能在表单中的设计时引用它们,正如您可以在下面的TextBox1.Text所在的位置看到的那样。你能告诉我怎么做吗?。谢谢你。下面是我为控件编写的代码: public Form4() { InitializeComponent(); SqlCon

我的数据库中有两个表,一个保存物品,另一个保存价格。我设计了一个表单,它以复选框的形式检索事物名称,并针对它们添加文本框。它们都是在窗体加载时在运行时创建的。它们都在相应的循环中命名,当表单加载时,我可以看到它们以我想要的方式排列。但是我不能在表单中的设计时引用它们,正如您可以在下面的TextBox1.Text所在的位置看到的那样。你能告诉我怎么做吗?。谢谢你。下面是我为控件编写的代码:

public Form4()
{
    InitializeComponent();
    SqlConnection conn = new SqlConnection("Data Source=ZEFIRAN\\SQLEXPRESS; Initial Catalog=Lab; Integrated Security=true");
    conn.Open();
    string say = "SELECT COUNT(DISTINCT Thing) FROM Sale";
    SqlCommand cmd = new SqlCommand(say, conn);
    Int32 ts = Convert.ToInt32(cmd.ExecuteScalar());
    conn.Close();
    for (int i = 0; i < ts; i++)
    {
        TextBox tb = new TextBox();
        tb.Width = 50;
        tb.Height = 25;
        tb.Name = "TextBox" + (i + 1).ToString();
        tb.Text = i + 1 + ". Test";
        panel1.Controls.Add(tb);
        int x = 150;
        int y = 40;
        tb.Location = new System.Drawing.Point(x, 40 + i * y);
    }
    for (int i = 0; i < ts; i++)
    {
        TextBox tb = new TextBox();
        tb.Width = 50;
        tb.Height = 25;
        tb.Name = "TextBox" + (2 * i + 1).ToString();
        tb.Text = i + 1 + ". Test";
        panel1.Controls.Add(tb);
        int x = 210;
        int y = 40;
        tb.Location = new System.Drawing.Point(x, 40 + i * y);
    }
    List<string> seyler = new List<string>();
    conn.Open();
    string query = "SELECT Thing FROM Things ORDER BY TNo";
    using (SqlCommand cmdtest = new SqlCommand(query, conn))
    {
        using (SqlDataReader dr = cmdtest.ExecuteReader())
        {
            while (dr.Read())
            {
                seyler.Add(dr.GetString(0));
            }
        }
    }
    string toplam = "SELECT COUNT(Thing) FROM Things";
    SqlCommand tplm = new SqlCommand(toplam, conn);
    Int32 top1 = Convert.ToInt32(tplm.ExecuteScalar());
    for (int j = 0; j < top1; j++)
    {
        CheckBox chb = new CheckBox();
        panel1.Controls.Add(chb);
        int t = 50;
        int u = 40;
        chb.Location = new System.Drawing.Point(t, 40 + j * u);
        chb.Width = 100;
        chb.Height = 25;
        chb.Text = seyler[j];
        chb.Name = "cb" + (j + 1).ToString();
    }
    conn.Close();
    TextBox1.Text = "";
}    

使用另一个数据结构,而不仅仅是panel1.Controls。您可以使用两个字典,一个用于文本框,另一个用于复选框。字典和字典太感谢你了,我试过了,但没有达到我的目的。