我在表单上有一组约100套控件(标签,复选框,文本框)。它们都标有默认名称,(textbox1,textbox2,... textbox101)除非需要,否则它们通常是隐藏的。 我跑的时候:
string msg = "";
foreach (Control child in Controls)
msg = msg + child.Name + ", ";
MessageBox.Show(msg);
只有前90个出现在Controls集合中(如Messagebox输出中所示)。就好像我在表格上达到了极限,但我知道我没有。
它们都是在.Designer.cs文件中创建的,它们看起来都一样。它们的创建方式相同。
...
private System.Windows.Forms.CheckBox checkBox88;
private System.Windows.Forms.Label label88;
private System.Windows.Forms.TextBox textBox88;
private System.Windows.Forms.CheckBox checkBox89;
private System.Windows.Forms.Label label89;
private System.Windows.Forms.TextBox textBox89;
private System.Windows.Forms.CheckBox checkBox90;
private System.Windows.Forms.Label label90;
private System.Windows.Forms.TextBox textBox90;
private System.Windows.Forms.CheckBox checkBox91;
private System.Windows.Forms.Label label91;
private System.Windows.Forms.TextBox textBox91;
private System.Windows.Forms.CheckBox checkBox92;
private System.Windows.Forms.Label label92;
private System.Windows.Forms.TextBox textBox92;
private System.Windows.Forms.CheckBox checkBox93;
private System.Windows.Forms.Label label93;
private System.Windows.Forms.TextBox textBox93;
...
是否有一些基础位置C#保存有关表单控件的信息? 谢谢!
答案 0 :(得分:1)
检查设计器文件并确保它们实际上已添加到表单中。也就是说,寻找this.Controls.Add(label91)
行。
有时设计器文件最终会出现孤立控件,可能您过去曾删除过某些内容。乍一看代码中看起来应该有一个控件,但它只是一个未使用的(剩余的)变量。
除此之外,请确保控件不在容器中(例如Panel
或GroupBox
)。他们将是孩子的孩子,而不是直接出现在Form.Controls
。
否则,属于格式的所有控件都将在Form.Controls
中,因为此 是子控件的基础位置(并且只是位置)