0

这是我的第一篇文章。我正在创建带有 89 个文本框的 ac# 应用程序。文本框被命名为“Box#”我如何在循环中更改文本框的值?像这样的东西:

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

4 回答 4

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";
}
于 2013-08-13T11:00:08.583 回答
2

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

代码片段;

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

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

希望这可以帮助。

于 2013-08-13T11:02:51.990 回答
0

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

与此类似的东西:

eval('Box' + count + '.Text = "'+newText+'";');
于 2013-08-13T11:03:49.653 回答
0

如果您以编程方式创建文本框,则可以将它们的Text属性绑定到 a 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();
}
于 2013-08-13T11:35:41.703 回答