0

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

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.

4

2 回答 2

2

你的代码就快到了。

将 mainPanel.Children 更改为 mainPanel.Controls 并向标签添加一些文本,以便您可以看到它们。(顺便说一句,您正在创建 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);
            }
        }
    }
于 2013-04-17T15:50:33.643 回答
0

非常感谢您的帮助,您在此处发布的内容实际上对我有很大帮助,但是,我使用以下代码解决了我的问题:

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。再次感谢!!!

于 2013-04-19T17:11:51.573 回答