2017-03-31 45 views
-1

我沒有代碼來顯示,因爲這是用C#我不理解在VS2015設計師的行爲問題的時候是不可預測的。我已經加入了一系列的標籤在面板上,這樣我就可以通過他們的代碼進行迭代。問題是,似乎不管什麼順序標籤添加到面板,控件的指標就沒有任何意義。C#指數將控件添加到面板

這是一個截圖。右側的彩色標籤都包含在一個單獨的面板中。我已經編碼標籤以在面板容器內顯示它們的索引。

enter image description here

將其在從下向上一次加入一個。我如何手動添加標籤並仍然具有可預測的索引?

任何幫助表示讚賞。

這是製作標籤的大小相同,renaminging他們LBL0,LBL1等,並增加他們在從上到下一次一後的結果....

enter image description here

+3

你在說什麼索引? TabIndex屬性? – LarsTech

+0

請解釋您的問題與'不可預知的指標'。換句話說,你想用那些需要精確索引的標籤來做什麼? – Steve

+1

你爲什麼在乎這個指數?您應該爲您想要的控制器分配一個名稱,然後使用它。 –

回答

1

你可以看到其中,控件添加到控件集合,如果你在Form.Designer.cs文件,它是類定義表單的一部分的樣子。

enter image description here

在這裏你會看到,隨着// 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]

enter image description here

現在,加入了面板是一個稍微不同的故事,但數量不多。因爲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]位置。

+0

我原本在帶有其他標籤的組框中使用控件,我添加了面板來分離我想要遍歷的控件。他們最初添加到groupBox的順序很可能是我搞砸了。我沒有想過檢查設計師的代碼......我是一名學生,仍然在學習。這個解決方案會爲我節省很多時間。至少我明白了現在的行爲,謝謝! – Protium