我只想了解这一点,尝试清理我的代码,以及将来参考。
我有很多textBoxes。
for (int i = 1; i == 7; i++)
{
string p = "tbPart" + i.ToString() + ".Clear";
}
有什么办法可以用循环代替数字吗?
我试过这个,但不知道我怎么能运行这个字符串。
<?php
include('dbconfig.php');
//header to give the order to the browser
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=download.csv');
//select table to export the data
$sql ="SELECT * FROM tablename";
$select_table=mysqli_query($db, $sql);
$rows = mysqli_fetch_assoc($select_table);
if ($rows)
{
getcsv(array_keys($rows));
}
while($rows)
{
getcsv($rows);
$rows = mysqli_fetch_assoc($select_table);
}
// get total number of fields present in the database
function getcsv($no_of_field_names)
{
$separate = '';
// do the action for all field names as field name
foreach ($no_of_field_names as $field_name)
{
if (preg_match('/\\r|\\n|,|"/', $field_name))
{
$field_name = '' . str_replace('<em>', '', $field_name) . '';
}
echo $separate . $field_name;
//sepearte with the comma
$separate = ',';
}
//make new row and line
echo "\r\n";
}
?>
答案 0 :(得分:6)
在表单代码内部(即在按钮单击事件处理程序中),您可以枚举表单上的所有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());
答案 1 :(得分:3)
不,你不能这样做。但是您可以定义放置控件的数组或列表,然后清除它们。例如:
List<TextBox> textboxes = new List<TextBox>();
textboxes.Add(tbPart1);
textboxes.Add(tbPart2);
textboxes.Add(tbPart3);
...
然后当你想要清除它们时
foreach (var tb in textboxes)
tb.Clear();
答案 2 :(得分:2)
TextBox[] boxes = new [] {
tbPart1,
tbPart2,
tbPart3,
tbPart4,
tbPart5,
tbPart6,
tbPart7
};
for (int i = 0; i < boxes.Length; i++)
{
boxes[i].Clear();
}
答案 3 :(得分:0)
我认为你应该使用一个文本框数组然后你可以做一个循环取决于文本框的数量。
答案 4 :(得分:0)
foreach(Control ctrl in this.Controls)
{
if(ctrl.GetType() == typeof(TextBox))
{
ctrl.Text = String.Empty;
}
}