C# 动态表单编辑

本文关键字:编辑 表单 动态 | 更新日期: 2023-09-27 18:27:24

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

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

C# 动态表单编辑

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

代码片段;

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

希望这有帮助。

使用 "Box" 时,您正在创建一个新的 String 对象。我建议将所有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";
}

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

类似于这样的东西:

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

如果以编程方式创建文本框,则可以将它们的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();
}