在WPF中单击按钮时创建文本框?

时间:2016-10-13 04:32:39

标签: c# .net wpf

我已经搜索了几个与此相关的stackoverflow线程但是我在代码中遇到问题plz审查我的代码并告诉我问题在哪里我被困住了,不知道问题在哪里我是新来的,请帮帮我

 public partial class MainWindow : Window
 {
    Grid MainGrid = new Grid();
    public MainWindow()
    {
       InitializeComponent();
    }
    private void button_Click(object sender, RoutedEventArgs e)
    {
        TextBox dynamicTextBox = new TextBox();
        dynamicTextBox.Text = "Type Partnumber";
        Grid.SetRow(dynamicTextBox, 1);
        Grid.SetColumn(dynamicTextBox, 0);
        this.MainGrid.Children.Add(dynamicTextBox);
    }
  }

1 个答案:

答案 0 :(得分:3)

通过使用button_Click事件,您将动态TextBox添加到MainGrid,该代码看起来很好。但问题是this.MainGrid不在Present UI中,它类似于动态创建的TextBox,因为您在代码隐藏中定义了它(请参阅构造函数Grid MainGrid = new Grid();上面的定义)。 / p>

考虑canContainer是xaml中定义的画布,如下所示

<Canvas Height="319" Margin="0"
        Width="517"
        Name="canContainer"/>

要解决此问题,您可以选择以下任何一种方法。

1.将MainGrid添加到UI。它会将网格添加到画布,请记住已添加到Grid的动态textBox。 这意味着代码应该是这样的 - &gt;

 this.canContainer.Children.Add(MainGrid);

2.将dynamicTextBox添加到UI中的任何其他父级。

this.canContainer.Children.Add(dynamicTextBox); 

您正在使用此方法,因此无需定义和添加MainGrid