如何使用 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 中设置结果。您可以对列执行相同的操作
我正在尝试使用 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 中设置结果。您可以对列执行相同的操作