使用循环清除.文本框(我).Clear().这可能吗?

本文关键字:Clear 循环 清除 文本 | 更新日期: 2023-09-27 18:16:53

我只是想知道这个尝试和清理我的代码,也为将来的参考。

我有一些文本框。

        tbPart1.Clear();
        tbPart2.Clear();
        tbPart3.Clear();
        tbPart4.Clear();
        tbPart5.Clear();
        tbPart6.Clear();
        tbPart7.Clear();

我是否可以使用循环来替换数字?

我试过了,但不知道如何运行字符串。

        for (int i = 1; i == 7; i++)
        {
            string p = "tbPart" + i.ToString() + ".Clear";
        }

使用循环清除.文本框(我).Clear().这可能吗?

在表单的代码中(即在按钮单击事件处理程序中),您可以枚举表单上的所有TextBox控件并对它们执行特定操作:

this.Controls.OfType<TextBox>().ToList().ForEach(x => x.Clear());

如果您只需要清除一些TextBox控件,您可以提供类似的过滤器:

this.Controls.OfType<TextBox>()
    // Add a condition to clear only some of the text boxes - i.e. those named "tbPart..."
    .Where(x=>x.Name.StartsWith("tbPart"))
    .ToList().ForEach(x => x.Clear());

不行,你不能那样做。但是您可以定义一个数组或列表来放置控件,然后清除它们。例如:

List<TextBox> textboxes = new List<TextBox>();
textboxes.Add(tbPart1);
textboxes.Add(tbPart2);
textboxes.Add(tbPart3);
...

当你想要清除它们时

foreach (var tb in textboxes)
    tb.Clear();
TextBox[] boxes = new [] {
    tbPart1,
    tbPart2,
    tbPart3,
    tbPart4,
    tbPart5,
    tbPart6,
    tbPart7
};
for (int i = 0; i < boxes.Length; i++)
{
    boxes[i].Clear();
}

我认为你应该使用一个数组的文本框,然后你可以做一个循环取决于文本框的数量。

foreach(Control ctrl in this.Controls)
{
    if(ctrl.GetType() == typeof(TextBox))
    {
        ctrl.Text = String.Empty;
    }
}

在panel1

中使用控件名称来回答第一个问题

private void button2_Click(对象发送者,EventArgs e){字符串currentCtrlName;

        for (int i = 0; i < panel1.Controls.Count; i++)
        {
            currentCtrlName = "textBox" + (i+1).ToString();
            panel1.Controls[currentCtrlName].Text = "";
        }
    }

==================第一个答案是使用控件索引作为panel1

中的子元素。

private void button2_Click(对象发送者,EventArgs e){

        for (int i = 0; i < panel1.Controls.Count; i++)
        {
            panel1.Controls[i].Text = "";
        }
    }

==================