【问题标题】:Increase object names programmatically C#以编程方式增加对象名称 C#
【发布时间】:2016-08-04 08:43:07
【问题描述】:

我有一个用于输入数据的文本框和 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";                    
}

【问题讨论】:

  • 那么你尝试了什么?
  • 与其先隐藏文本框,然后根据计数显示,不如动态生成n个文本框
  • 对不起,我添加了代码。
  • 实际上,如果我能解决这个问题,我会将此代码与之前创建、排列和调整大小的图片框和面板一起使用。

标签: c# object textbox names


【解决方案1】:

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

例子:

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

【讨论】:

  • 没问题,很高兴能帮上忙
【解决方案2】:
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--;
    }
}

【讨论】:

  • 它也可以,但底部对我来说更好。非常感谢!
【解决方案3】:

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

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);
}

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多