我已经搜索了一些与此相关的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);
    }
  }

最佳答案

通过使用button_Click事件,您可以将动态TextBox添加到MainGrid,并且该代码看起来不错。但是问题在于this.MainGrid不在Present UI中,它与动态创建的TextBox相似,因为您已经在后台代码中定义了它(请参见构造函数Grid MainGrid = new Grid();上方的定义)。

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

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


为了克服这个问题,您可以选择以下任何一种方法。

1.将MainGrid添加到UI。它将网格添加到画布,请记住已经添加到网格的动态文本框。
这意味着代码应该像这样->

 this.canContainer.Children.Add(MainGrid);


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

this.canContainer.Children.Add(dynamicTextBox);


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

关于c# - WPF中单击按钮时创建文本框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40012337/

10-09 15:50