2015-04-29 3 views
0

Я пытаюсь добавить список строк, которые будут использоваться в качестве текстового компонента меток в форме окна. Ниже приведен код, который я использую для этого. Я создаю окно сообщения, чтобы показать мне, что создается, но когда я добавляю их в форму, в форме всегда отображается только первая строка, несмотря на то, что для каждой строки, отображающей список, , Любая помощь будет большой.Динамически добавлять компоненты к форме Windows C#

List<Label> labelList; 

    public void ShowDialog(List<String> columns) 
    { 
     labelList = new List<Label>(); 
     Form updateDialog = new Form(); 
     updateDialog.Width = 500; 
     updateDialog.Height = 500; 


     for (int i = 0; i < columns.Count(); i++) 
     { 
      //Label label = new Label() {Text=columns[i].ToString() }; 

      labelList.Add(new Label() {Text=columns[i].ToString()}); 
     } 

     for (int j = 0; j < labelList.Count(); j++) 
     { 

      updateDialog.Controls.Add(labelList[j]); 
      MessageBox.Show(labelList[j].Text.ToString()); 
     } 
+0

Поскольку вы ставите их все друг на друга. Вам нужно установить свойство 'Location' (или' Top'/'Left'), чтобы поместить их в места, где вы можете их увидеть. –

ответ

1

Необходимо установить местоположение созданных меток. Они расположены друг над другом в месте (0, 0).

+0

Gotcha, это имеет смысл, извините первый раз, работая в C#. Мой фон - все в java, поэтому я предположил, что у него будет какой-то базовый менеджер компоновки по умолчанию и разместит их слева направо. Я возьму это и выясню, как регулировать положение динамически. благодаря! – user519670

0

Элементы управления добавляются к form, но они не видны вам. Просто установите разное местоположение для каждого Label, и вы их увидите.

Вы можете также точный код, используя 1 петлю вместо:

int yAxis = 10; 
for (int i = 0; i < columns.Count(); i++) 
{ 
    //create label 
    Label newLbl = new Label() {Text=columns[i].ToString()}; 
    newLbl.Location = new Point(10, yAxis * i); //will create a column of all labels, you can use your oown logic too 

    //add to list 
    labelList.Add(newLbl); 

    //add to form 
    updateDialog.Controls.Add(newLbl); 

    //show on msg box 
    MessageBox.Show(newLbl.Text.ToString()); 
} 
+0

Это правда, я мог бы, и я думаю, что буду. спасибо за предложение! – user519670

Смежные вопросы