如何使用 C# 来防止文本块重叠?

How do I use C# to prevent textblocks from overlapping?

我正在尝试使用 C# 在每次循环迭代结束时将 TextBlock 添加到我的 MainWindow。

但是,每次迭代都会在前一个之上添加一个。 属性 的 TextBlocks(如果有的话)允许我防止它们重叠吗?

下面是一个 for 循环:

TextBlock result = new TextBlock();

result.Text = [string];

result.Width = 200;
result.Height = 100;
result.Margin = new Thickness(20, 20, 20, 20);

result.Name = "email" + [string];

Analysis_Space.Children.Add(result);

Analysis_Space指的是我的MainWindow的主格子。

正确使用面板控件将帮助您解决这个问题。使用哪个面板取决于您的 GUI 需求。参考 this link.

例如,将新的StackPanel放在Analysis_Space上。然后,将您的文本区域添加到 StackPanel.

您的新代码如下所示:

TextBlock result = new TextBlock();
result.Text = [string];
result.Width = 200;
result.Height = 100;
result.Margin = new Thickness(20, 20, 20, 20);
result.Name = "email" + [string];
stackPanel.Children.Add(result);

在上面的代码中,stackPanel 表示放置在主网格面板上的 StackPanel 的实例。

如果您使用的是网格,但没有告诉程序 row/column 应将文本块放置在哪个位置,它会将它们放置在默认的 0,0 位置(即 Grid.Row = 0 和 Grid.Column = 0)

你必须这样做:

Grid.SetRow(result, 1);

在行号 1 中设置结果。您可以对列执行相同的操作