C# 动态创建标签和RichTextBox

C# 动态创建标签和RichTextBox,c#,wpf,list,label,C#,Wpf,List,Label,我试图在触发事件时在标签旁边显示x个数量的标签和富文本框,不幸的是,我无法做到这一点,下面的代码显示了我试图仅使用5个标签创建标签部分,但在编译和执行项目时它甚至不显示这些标签。我昨天和今天早上搜索了一整天谷歌,但都没有找到具体的例子。如果有人能为我指出正确的方向(我仍然需要制作富文本框,但我认为这与标签的制作过程相同),我将非常感激。谢谢 List<Label> labels = new List<Label>(); for (int i = 0; i <= 5

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

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);
}
列表标签=新列表();

对于(inti=0;i您的代码就快到了

将mainPanel.Children更改为mainPanel.Controls 并向标签添加一些文本,以便您可以看到它们。(顺便说一句,您正在创建6个标签,而不是5个,因为您使用的是0到5,而不是0到<5)

这在flow布局面板(在常规面板中,所有标签将彼此重叠)中对我有效:

private void按钮1\u单击(对象发送者,事件参数e)
{
列表标签=新列表();

对于(int i=0;i非常感谢您的帮助,您在此处发布的内容实际上帮助了我很多,但是,我使用以下代码解决了我的问题:

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);
}
for(int i=0;i

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

我看不到您在任何地方填充标签的
内容
属性,因此可能您的标签正在生成,但它们只是留空,所以您看不到它们?另外,更好的解决方案可能是将收集数据的
,并将
项模板设置为
标签(或
RichTextBox
,或两者都设置)谢谢Rachel!你说得对,显然标签正在创建中,但没有填充,我的错:)。我相信我并没有按预期的方式使用WPF,我浏览了你的博客文章,但这个想法还没有完全进入我的脑海,我将不得不再读几遍你的博客,看看它是否会变得更清晰。你知道有没有其他资源可以解释你在博客中解释的内容,但有更广阔的视角和更多的例子像指南或教程一样?-谢谢!你读过我的文章吗?它解释了WPF有一个数据层和一个UI层,UI层应该只是一个与数据层交互的用户友好界面。这可能对解释WPF的工作原理最有帮助。(如果您感兴趣,顶部的链接还包含我为WPF/MVVM初学者编写的教程帖子的一部分)
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);
}