for (int i = 0; i < 3; i++) { if (t.Tag.Equals("txt" + c.Tag + (i + 1).ToString())) { panel.Controls.Remove(t); //break; } }每次删除一个非最大索引的控件后,剩下控件的索引会发生变化,所以,你改成这样的吧ComboBox c = sender as ComboBox; int k = panel.Controls.Count; for (int j = k, j <= 0; j --) { Control t = panel.Controls[j]; if (t is TextBox) { for (int i = 0; i < 3; i++) { if (t.Tag.Equals("txt" + c.Tag + (i + 1).ToString())) { panel.Controls.Remove(t); //break; } } } }
每次删除一个非最大索引的控件后,剩下控件的索引会发生变化,所以,你改成这样的吧ComboBox c = sender as ComboBox; int k = panel.Controls.Count; for (int j = k, j <= 0; j --) { Control t = panel.Controls[j]; if (t is TextBox) { for (int i = 0; i < 3; i++) { if (t.Tag.Equals("txt" + c.Tag + (i + 1).ToString())) { panel.Controls.Remove(t); //break; } } } } 非常感谢!果然是这个问题!代码有点小小的问题,改了后就可以了! private void RemoveTextBoxFromPanel(Object sender, Panel panel) { ComboBox c = sender as ComboBox; int k = panel.Controls.Count; for (int j = k; j >0; j--) { Control t = panel.Controls[j-1]; if (t is TextBox) { for (int i = 0; i < 3; i++) { if (t.Name.Equals("txt" + c.Tag + (i + 1).ToString())) { //Trace.WriteLine("debug"); panel.Controls.Remove(t); break; } } } } }
{
if (t.Tag.Equals("txt" + c.Tag + (i + 1).ToString()))
{
panel.Controls.Remove(t);
//break;
}
}每次删除一个非最大索引的控件后,剩下控件的索引会发生变化,所以,你改成这样的吧ComboBox c = sender as ComboBox;
int k = panel.Controls.Count;
for (int j = k, j <= 0; j --)
{
Control t = panel.Controls[j];
if (t is TextBox)
{
for (int i = 0; i < 3; i++)
{
if (t.Tag.Equals("txt" + c.Tag + (i + 1).ToString()))
{
panel.Controls.Remove(t);
//break;
}
}
}
}
int k = panel.Controls.Count;
for (int j = k, j <= 0; j --)
{
Control t = panel.Controls[j];
if (t is TextBox)
{
for (int i = 0; i < 3; i++)
{
if (t.Tag.Equals("txt" + c.Tag + (i + 1).ToString()))
{
panel.Controls.Remove(t);
//break;
}
}
}
} 非常感谢!果然是这个问题!代码有点小小的问题,改了后就可以了!
private void RemoveTextBoxFromPanel(Object sender, Panel panel)
{
ComboBox c = sender as ComboBox;
int k = panel.Controls.Count;
for (int j = k; j >0; j--)
{
Control t = panel.Controls[j-1];
if (t is TextBox)
{
for (int i = 0; i < 3; i++)
{
if (t.Name.Equals("txt" + c.Tag + (i + 1).ToString()))
{
//Trace.WriteLine("debug");
panel.Controls.Remove(t);
break;
}
}
}
}
}