动态创建标签和richtextbox

时间:2013-04-17 15:00:08

标签: c# wpf list label

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

5 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:Labels会进入RichTextBoxes

2 个答案:

答案 0 :(得分: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);
            }
        }
    }

答案 1 :(得分: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。再次感谢!!!