gpt4 book ai didi

c# - 如何使用 C# 在 WPF 中的 Canvas 上垂直添加矩形?

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:46 27 4
gpt4 key购买 nike

我的 WPF 应用程序中有一个 Canvas。我在单击按钮时添加了 RectangleWidth 是固定的,但是 Height 是用户在 TextBox/GridCell 中输入的值。

当我在 Canvas 上添加指定 Height 的矩形时。它添加了矩形但是,它并没有一个接一个地出现。有什么想法吗?

在 .xaml.cs 中:

int width=200;
Reactangle rect;
static int val=0;
Protected void Add()
{
rect = new Rectangle();
rect.Stroke = Brushes.Red;
rect.StrokeThickness = 1;
rect.Height = Convert.ToInt32(txtheight.Text);
rect.Width = width;
Canvas.SetLeft(rect,100);
Canvas.SetTop(rect,rect.Height);
rect.Tag = val;
canvasboard.Children.Add(rect);
val=val+1;
}

enter image description here这会在 Canvas 上一个接一个地添加 Rectangle 但不是 Exactly。

<Canvas Name="canvasboard" Background="White"  Margin="2">
</Canvas>
<TextBox Name="txtheight" Width="150"/>

注意:我不能为此表单使用 WrapPanelStackPanel 并且想对现有代码进行更改。

感谢帮助!

最佳答案

如果您添加的所有元素都是垂直添加到此 Canvas 中的顺序元素,则您无需在类作用域中添加新变量也可以做到这一点。

private void Add() {
rect = new Rectangle {
Stroke = Brushes.Red,
StrokeThickness = 1,
Height = Convert.ToDouble(txtheight.Text),
Width = width
};
Canvas.SetLeft(rect, 100);
double canvasTop = 0.0;
if (canvasboard.Children.Count > 0) {
var lastChildIndex = canvasboard.Children.Count - 1;
var lastChild = canvasboard.Children[lastChildIndex] as FrameworkElement;
if (lastChild != null)
canvasTop = Canvas.GetTop(lastChild) + lastChild.Height + 1;
}
Canvas.SetTop(rect, canvasTop);
rect.Tag = val++;
canvasboard.Children.Add(rect);
}

关于c# - 如何使用 C# 在 WPF 中的 Canvas 上垂直添加矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17615056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com