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