C#动态表单编辑

时间:2013-08-13 10:57:13

标签: c# loops

这是我的第一篇文章。 我正在创建一个包含89个文本框的c#应用程序。文本框命名为“Box#” 如何更改循环中文本框的值?像这样的事情:

for (int y = 0; y < 89; y++)
{
    "Box"+y.Text = "somthing";
}

4 个答案:

答案 0 :(得分:2)

使用String时,您正在创建新的"Box"对象。我建议将所有TextBox个对象放入列表中。

List<TextBox> boxes = new List<TextBox>();

// Add all of your text boxes.

foreach (TextBox box in boxes) {
    box.Text = "This will change the text";
}

答案 1 :(得分:2)

您可以检查表单上控件的Type,如果TypeTextBox,那么只需调整测试(VIA循环)。

代码段;

public Form1()
    {
        InitializeComponent();
        ChangeTextBoxes();
    }

public void ChangeTextBoxes()
    {
        foreach (var c in this.Controls.OfType<TextBox>())
        {
            c.Text = @"New Value";
        }
    }

希望这有帮助。

答案 2 :(得分:0)

如果您在View(客户端使用Javascript)中进行此更改,请使用“eval()”函数。

类似的东西:

eval('Box' + count + '.Text = "'+newText+'";');

答案 3 :(得分:0)

如果以编程方式创建文本框,则可以将其Text属性绑定到DataTable,这样可以提供一些很好的可维护性功能:

DataTable _tbValues;

private void Form1_Load(object sender, EventArgs e)
{
    _tbValues = new DataTable();
    string[] cells = new string[89];
    for (int i = 0; i < 89; i++)
    {
        _tbValues.Columns.Add(String.Format("Box{0}", i));
        var tb = new TextBox();
        tb.Name = String.Format("Box{0}", i);
        tb.DataBindings.Add("Text", _tbValues, String.Format("{0}", tb.Name));
        tb.Top = i * 20;
        this.Controls.Add(tb);
    }
    _tbValues.Rows.Add(cells);
}

private void button1_Click(object sender, EventArgs e)
{
    _tbValues.Rows[0].ItemArray = Enumerable
        .Repeat(DateTime.Now as object, _tbValues.Columns.Count)
        .ToArray();
    _tbValues.AcceptChanges();
}
相关问题