【发布时间】:2014-06-03 18:26:25
【问题描述】:
我在 TabPages 上动态创建控件,当然,这些控件位于 TabControl 上。我也希望能够动态处理这些。我怎样才能做到这一点?在 TabControl 的 TabPages 集合上调用 Clear 实际上会释放 TabPages 本身,这违背了在这些页面上使用新的动态创建的控件“重新开始”的目的。
调用 tabPageBla.Controls.Clear() 与我想要的很接近,但它也会在我需要保留的每个 TabPage (FlowControlLayout) 上配置一个容器控件。
有没有一种简单的方法来实现这一点(只处理动态创建的控件,而不是其他任何控件)?
更新
这项工作是否可行 - 是否还会找到 TabControl1 的孙子(标签页的子页)?:
List<Control> ctrls = new List<Control>();
ctrls.AddRange(tabControl1.Controls);
foreach (var ctrl in ctrls)
{
// Controls named "panelRowBla", "richTextBoxBla", and "pictureBoxBla" need to be retained
string ctrlName = ctrl.Name;
if ((ctrlName.Contains("panelRow")) ||
(ctrlName.Contains("richTextBox")) ||
(ctrlName.Contains("pictureBox")))
{
continue;
}
}
更新 2
这很奇怪;我可以发誓这只是编译,但现在我得到“Argument 1: cannot convert from 'System.Windows.Forms.Control.ControlCollection' to System.Collections.Generic.IEnumerable'”
(在“AddRange()”行)。
【问题讨论】:
-
抱歉 - 添加了“Winforms”标签。
标签: c# winforms dynamic dispose