以编程方式增加对象名称 C#

Increase object names programmatically C#

我有一个用于数据输入的文本框和 10 个用于显示数据的文本框。 10 个查看器文本框默认为 visible=false。例如,当我输入文本框计数为 "3" 时,只有 3 个文本框应该可见。 (然后我可以用这些文本框做任何我想做的事)

这是我的代码;

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ToString());

SqlCommand pencere = new SqlCommand("select COUNT (distinct(grup)) as ürün from fiyat", conn);
SqlCommand pencereisimleri = new SqlCommand("select distinct(grup) as ürün from fiyat", conn);
conn.Open();
SqlDataReader dr = pencere.ExecuteReader();
SqlDataAdapter da = new SqlDataAdapter(pencereisimleri);
DataTable dt1 = new DataTable();
da.Fill(dt1);

List<String> stringArr = new List<String>();

for (int a = 0; a < dt1.Rows.Count; a++)
{
    TextBox[a].Visible = true;
    TextBox[a].Text = "Open Textbox";                    
}

不确定,如果您要这样做,但是将文本框添加到集合(如数组或列表)怎么样?

示例:

private List<TextBox> boxes = new List<TextBox>();
boxes.Add(textBox1);
boxes.Add(textBox2);
// etc...

然后您可以使用 foreach(或 for)循环遍历您的框:

for (int a = 0; a < dt1.Rows.Count; a++)
{
    boxes[a].Visible = true;
    boxes[a].Text = "Open Textbox";
}
int count = dt1.Rows.Count;

foreach (Control x in this.Controls)
{
    if (count == 0)
       break;

    if (x is TextBox)
    {
        ((TextBox)x).Text = "Open Textbox";
        ((TextBox)x).Visible = true;
        count--;
    }
}

您可以将可见性绑定到数组

Visibility[] tbViz = new Visibility[10];
public Visibility[] TbViz { get { return tbViz; } }
public void UpdateViz(int num)
{
    for (int i = 0; i < tbViz.Length; i++)
    {
        if (i < num)
            tbViz[i] = System.Windows.Visibility.Visible;
        else
            tbViz[i] = System.Windows.Visibility.Hidden;
    }

}

Visisbility="{binding path=TbViz[0]}" 

如果 winforms 同样的方法

public void UpdateViz(int num)
{
    for (int i = 0; i < tbViz.Length; i++)
        tbViz[i].Visisble = (i < num);
}