你可以看到其中,控件添加到控件集合,如果你在Form.Designer.cs文件,它是類定義表單的一部分的樣子。
在這裏你會看到,隨着// Form
開頭的部分,在你將看到它調用`this.Controls.Add();
在此列表中的項目出現在你下降到它們的形式(至少對我來說,他們這樣做)的順序。我只是複製/粘貼10個標籤到窗體上,我看到:
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 684);
this.Controls.Add(this.label10);
this.Controls.Add(this.label9);
this.Controls.Add(this.label8);
this.Controls.Add(this.label7);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
在運行時,控件完全按照自己的閱讀上面的代碼預期在集合中找到;最後添加的控制是在指數[0]
:
現在,加入了面板是一個稍微不同的故事,但數量不多。因爲Panel
是一個容器對象,標籤被添加到Panel
控件集合:
//
// panel1
//
this.panel1.Controls.Add(this.label18);
this.panel1.Controls.Add(this.label17);
this.panel1.Controls.Add(this.label16);
this.panel1.Controls.Add(this.label15);
this.panel1.Controls.Add(this.label14);
this.panel1.Controls.Add(this.label13);
this.panel1.Controls.Add(this.label12);
this.panel1.Controls.Add(this.label11);
this.panel1.Location = new System.Drawing.Point(37, 366);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(200, 172);
this.panel1.TabIndex = 13;
但是請注意,該行爲是相同的。最近控件添加到Controls
收集第一,並且將在Panel.Controls[0]
位置。
你在說什麼索引? TabIndex屬性? – LarsTech
請解釋您的問題與'不可預知的指標'。換句話說,你想用那些需要精確索引的標籤來做什麼? – Steve
你爲什麼在乎這個指數?您應該爲您想要的控制器分配一個名稱,然後使用它。 –