C# 向windows窗体C动态添加组件#

C# 向windows窗体C动态添加组件#,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我正在尝试添加字符串列表,用作windows窗体上标签的文本组件。下面是我用来做这件事的代码。我让它生成一个消息框来显示正在创建的内容,但是当我将它们添加到表单中时,表单上只会显示第一个字符串,尽管每个字符串都会弹出一个消息框,指示列表已正确填充。任何帮助都会很好 List<Label> labelList; public void ShowDialog(List<String> columns) { labelList = new Li

我正在尝试添加字符串列表,用作windows窗体上标签的文本组件。下面是我用来做这件事的代码。我让它生成一个消息框来显示正在创建的内容,但是当我将它们添加到表单中时,表单上只会显示第一个字符串,尽管每个字符串都会弹出一个消息框,指示列表已正确填充。任何帮助都会很好

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());
        }
列表标签列表;
公共void显示对话框(列表列)
{
labelList=新列表();
Form updateDialog=新表单();
updateDialog.Width=500;
updateDialog.Height=500;
对于(int i=0;i
您需要设置所创建标签的位置。它们在位置(0,0)处相互重叠。

您需要设置所创建标签的位置。它们在位置(0,0)处相互重叠.

您需要设置所创建标签的位置。它们在位置(0,0)处相互重叠。

您需要设置所创建标签的位置。它们在位置(0,0)处相互重叠

您还可以使用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());
}
int-yAxis=10;
对于(int i=0;i
控件正在添加到
表单中,但它们对您不可见。只需为每个
标签设置不同的位置,您就会看到它们

您还可以使用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());
}
int-yAxis=10;
对于(int i=0;i
控件正在添加到
表单中,但它们对您不可见。只需为每个
标签设置不同的位置,您就会看到它们

您还可以使用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());
}
int-yAxis=10;
对于(int i=0;i
控件正在添加到
表单中,但它们对您不可见。只需为每个
标签设置不同的位置,您就会看到它们

您还可以使用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());
}
int-yAxis=10;
对于(int i=0;i
因为您将它们放在彼此的顶部。您需要设置
位置
属性(或
顶部
/
左侧
)以将它们放在您可以看到的位置。因为您将它们放在彼此的顶部。您需要设置
位置
属性(或
顶部
/
左侧
)要将它们放置在您可以看到它们的位置。因为您将它们都放在彼此的顶部。您需要设置
位置
属性(或
顶部
/
左侧
)以将它们放置在您可以看到它们的位置。因为您将它们都放在彼此的顶部。您需要设置
位置
属性(或
顶部
/
左侧
)把它们放在你能看到的地方。明白了,这很有道理,很抱歉第一次在c#工作。我的背景都是java,所以我假设它会有一些基本的默认布局管理器,并将它们从左到右定位。我会拿着这个,并找出如何动态调整位置。谢谢!明白了,这很有意义,sorry第一次在c#工作。我的背景都是java,所以我假设它会有一些基本的默认布局管理器,并将它们从左到右定位。我会拿着这个,并找出如何动态调整位置。谢谢!明白了,很有意义,很抱歉第一次在c#工作。我的背景都是java,所以我也是Summed它将有一些基本的默认布局管理器,并将它们从左到右定位。我将利用这个,并找出如何动态调整位置。谢谢!明白了,这很有意义,很抱歉第一次在c#工作。我的背景都是java,所以我假设它将有一些基本的默认布局