如何找到动态创建的文本框的位置?

时间:2013-12-20 10:50:02

标签: c# wpf dynamic

我在屏幕上的画布上添加了我的页面上的按钮,所以当我点击“添加标题”时,它会在某个位置添加一个文本框,当我点击添加问题时,它会做同样的事情。

enter image description here

以下是我执行此操作的代码。

public void AddTitle_Click(object sender, RoutedEventArgs e)
{
    TextBox x = new TextBox();
    x.Name = "new_textbox";
    x.TextWrapping = TextWrapping.Wrap;
    x.Height = 20;
    x.Width = 100;
    x.AcceptsReturn = true;
    x.Margin = new Thickness(5, 10, 0, 0);
    canvas1.Children.Add(x);
    Canvas.SetLeft(x, 100);
    Canvas.SetTop(x, 100);
}

private void AddQuestion_Click(object sender, RoutedEventArgs e)
{
    TextBox x = new TextBox();
    x.Name = "new_textbox";
    x.TextWrapping = TextWrapping.Wrap;
    x.Height = 20;
    x.Width = 200;
    x.AcceptsReturn = true;
    x.Margin = new Thickness(5, 10, 0, 0);
    canvas1.Children.Add(x);
    Canvas.SetLeft(x, 140);
    Canvas.SetTop(x, 140);
}

标题位置是较小的文本框,而问题是较大的文本框。标题可以有任何数量的问题。所以,当我点击“添加问题”时,我需要它显示在最后一个问题文本框下方,当我点击添加标题时,我需要它显示在最后一个问题的下方,但位于不同的位置?

我删除了我的旧帖子,因为我想出了如何添加文本框。

1 个答案:

答案 0 :(得分:2)

您不必像那样添加它们。

您应该使用TreeView或至少StackPanels并将它们添加到它们中。

此外,这一行:

x.Name = "new_textbox";

不正确。如果添加多个具有相同名称的元素,则会产生错误(它应该是唯一的)。您应该将该属性留空或动态地为它们命名。

我希望你有足够的信息,这些代码的方法是多方面的,而且非常长。

编辑:要在窗口中找到某个元素,请看这个问题: Get Absolute Position of element within the window in wpf