动态创建标签和富文本框

本文关键字:文本 创建 标签 动态 | 更新日期: 2023-09-27 18:09:45

我正试图在触发事件时显示x个标签和标签旁边的富文本框,不幸的是,我一直无法做到这一点,下面的代码显示了我试图仅使用5 labels创建labels部分,但在编译和执行项目时,它甚至没有显示它们。昨天和今天早上,我在谷歌上搜索了一整天,但都找不到具体的例子。如果有人能告诉我正确的方向(我仍然需要制作丰富的文本框,但我认为这与标签的过程相同(,我将不胜感激。谢谢。

List<Label> labels = new List<Label>();
for (int i = 0; i <= 5; i++)
{
    Label label = new Label();
    label.Name = "lbl" + i;
    mainPanel.Children.Add(label);
}

Edit:我忘了提到这些LabelsRichTextBoxes将进入Grid

动态创建标签和富文本框

您的代码就快到了。

更改主面板。子项到主面板。控件并在标签中添加一些文本,以便您可以看到它们。(顺便说一句,你正在创建6个标签,而不是5个,因为你使用的是0到5,而不是0到<5(

这在流程布局面板中对我起到了作用(在常规面板中,所有标签都会放在一起(:

    private void button1_Click(object sender, EventArgs e)
    {
        List<Label> labels = new List<Label>();
        for (int i = 0; i <= 5; i++)
        {
            Label label = new Label();
            label.Name = "lbl" + i;
            label.Text = "Test text";
            mainPanel.Controls.Add(label);
        }
        List<RichTextBox> textBoxes = new List<RichTextBox>();
        for (int col = 0; col < 2; col++)
        {
            for (int row = 0; row < 2; row++)
            {
                RichTextBox richTB = new RichTextBox();
                richTB.Name = "textBox" + col + row;
                tableLayoutPanel1.Controls.Add(richTB);
                tableLayoutPanel1.SetColumn(richTB, col);
                tableLayoutPanel1.SetRow(richTB, row);
            }
        }
    }

非常感谢您的帮助,您在这里发布的内容实际上帮助了我很多,然而,我通过使用以下代码解决了我的问题:

for (int i = 0; i < lineCount; i++)
{
    TextBlock txtb = new TextBlock();
    scrlPanel.RowDefinitions.Add(new RowDefinition());
    txtb.Name = "txtb" + i;
    txtb.Text = obj.ReadLine();
    txtb.Height = 60;
    txtb.Width = 110;
    txtb.HorizontalAlignment = HorizontalAlignment.Left;
    txtb.TextAlignment = TextAlignment.Justify;
    txtb.TextWrapping = TextWrapping.Wrap;
    txtb.ToolTip = txtb.Text;
    scrlPanel.Children.Add(txtb);
    Grid.SetRow(txtb, i);
}
for (int i = 0; i < lineCount; i++)
{
    RichTextBox rtb = new RichTextBox();
    Paragraph p = rtb.Document.Blocks.FirstBlock as Paragraph;
    rtb.Name = "rtb" + i;
    rtb.Height = 60;
    rtb.Width = 220;
    p.LineHeight = 1;
    rtb.HorizontalAlignment = HorizontalAlignment.Right;
    scrlPanel.Children.Add(rtb);
    Grid.SetRow(rtb, i);
}

我不知道这是否是正确的使用方式,但它有效:D。再次感谢!!!