使用循环清除.文本框(我).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";
}
在表单的代码中(即在按钮单击事件处理程序中),您可以枚举表单上的所有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 = "";
}
}
==================