You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WPF项目如何在运行时动态向窗口添加TextBox控件

问题原因

  • WPF中Window的Content属性仅支持单个子元素,你循环赋值每次都会覆盖之前的内容,所以最后只显示最后一个TextBox。
  • 你XAML里的Grid没有设置x:Name属性,后台代码无法引用这个容器对象,自然没法调用Add方法加控件。

解决步骤

  1. 修改MainWindow.xaml,给Grid添加名称:
<Grid x:Name="MainGrid">
<!-- 其余原有内容保持不变 -->
    <Button Content="Résoudre" HorizontalAlignment="Left" Margin="10,210,0,0" VerticalAlignment="Top" Click="Resoudre"/>
    <Button Content="Effacer tout" HorizontalAlignment="Left" Margin="75,210,0,0" VerticalAlignment="Top" Click="Effacer"/>
</Grid>
  1. 修改MainWindow.xaml.cs代码:
    把TextBox数组定义为类的公共成员,方便后续求解、清空功能调用,同时修改控件添加逻辑:
public partial class MainWindow : Window
{
    // 将TextBox数组提升为类成员,后续业务逻辑可以直接访问
    public TextBox[] SudokuCells = new TextBox[81];

    public MainWindow()
    {
        InitializeComponent(); 
        GenerateTextBoxes();   
    }
    public void GenerateTextBoxes()
    {
        // 测试生成5个的逻辑,验证没问题可以替换为下方的9*9循环
        for (int i = 0; i < 5; i++)
        {
            TextBox TBox = new TextBox();
            TBox.Margin = new Thickness(10 + 20 * i, 10, 0, 0);
            TBox.Text = i.ToString();
            TBox.Width = 20;
            TBox.Height = 20;
            TBox.HorizontalAlignment = HorizontalAlignment.Left;
            TBox.VerticalAlignment = VerticalAlignment.Top;
            // 核心:将控件添加到Grid的子元素集合
            MainGrid.Children.Add(TBox);
            SudokuCells[i] = TBox;
        }

        // 生成完整81个格子的代码,测试通过后替换上面的单循环即可
        // for (int row = 0; row < 9; row++)
        // {
        //     for (int col = 0; col < 9; col++)
        //     {
        //         int index = row * 9 + col;
        //         TextBox TBox = new TextBox();
        //         // 按行列计算偏移量
        //         TBox.Margin = new Thickness(10 + 20 * col, 10 + 20 * row, 0, 0);
        //         TBox.Width = 20;
        //         TBox.Height = 20;
        //         TBox.HorizontalAlignment = HorizontalAlignment.Left;
        //         TBox.VerticalAlignment = VerticalAlignment.Top;
        //         // 可在此处添加输入限制,仅允许输入1-9数字
        //         MainGrid.Children.Add(TBox);
        //         SudokuCells[index] = TBox;
        //     }
        // }
    }

    // 后续的求解、清空方法可以直接操作SudokuCells数组获取/修改格子数值
}

内容的提问来源于stack exchange,提问作者BOUHL R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 17:45:02