我想在listBox SelectedIndexChanged事件上动态创建一些控件标签和轨迹栏,然后再创建它们,我需要删除所有的标签和轨迹栏。
并不是在每个列表框SelectedIndexChanged事件中都需要生成那么多的标签和文本框。我如何确保,每次调用事件时,都会创建控件的价格金额。
当前想法:删除轨迹栏和标签,然后创建它们,但当然你会得到一个错误消息说,轨迹栏/标签不存在。
到目前为止我想到的代码是:
if (trackbar != null)
{
trackBar.Dispose();
}
for (int i = 0; i < calc; i++)
{
Label Label = new Label();
Label.Name = "TrackbarWidth" + a++;
Label.Text = "Board -" + a + "- Height:";
Label.Location = new Point(10, 450 + (50 * c));
Label.Size = new System.Drawing.Size(100, 25);
this.Controls.Add(Label);
TrackBar trackBar = new TrackBar();
trackBar.Name = "TrackbarWidth" + c++;
trackBar.Maximum = 85;
trackBar.Minimum = 65;
trackBar.SmallChange = 5;
trackBar.TickFrequency = 5;
trackBar.Value = 65;
trackBar.Location = new Point(150, 450 + (50 * c));
trackBar.Size = new System.Drawing.Size(100, 25);
TrackBarAdded.Insert(0, trackBar);
this.Controls.Add(trackBar);
}发布于 2013-06-19 04:45:21
只需在创建之前,遍历所有trackbar类型的表单控件并将其释放
foreach(TrackBar t in this.Controls.OfType<TrackBar>())
{
t.Dispose();
}如果您有任何不想删除的控件,可以使用它的Tag属性添加一些标志值,这将帮助您标记不想删除的控件
Ex:
Label a = new Label();
a.Tag = "non-disposal";
Label b = new Label();
foreach(Label l in this.Controls.OfType<Label>())
{
if(l.Tag.ToString()!="non-disposal")
l.Dispose();
}所以Label a不会被删除,而不是b
https://stackoverflow.com/questions/17178512
复制相似问题