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

在C#中如何通过数组/矩阵存储TextBox引用并修改文本?

嘿,我之前做WinForm数独项目的时候也这么存控件,其实核心就是你存的是TextBox的引用,所以不管是一维数组还是二维矩阵,直接通过数组元素访问Text属性就能改文本,根本不需要复杂操作!我给你分两种情况讲明白:

一、用一维数组修改TextBox文本

假设你已经把81个TextBox都存入了一维数组tb,并且每个元素都正确指向了对应的控件(比如tb[0] = textBox1,tb[1] = textBox2...),那修改指定位置的文本超级简单:

// 比如修改第1个TextBox(对应数组索引0)的文本为"3"
tb[0].Text = "3";

// 再比如修改第50个TextBox(索引49)的文本为"8"
tb[49].Text = "8";

原理很直白:数组里存的不是控件的副本,而是指向原TextBox对象的引用,所以你修改数组元素的Text属性,就是直接修改原控件的显示内容。

二、转成二维矩阵后修改文本

如果把一维数组转成9×9的二维矩阵(更贴合数独的行列逻辑),操作也差不多,先给你说怎么转矩阵,再讲修改方法:

第一步:把一维数组转成二维矩阵

// 初始化9×9的二维TextBox数组
TextBox[,] sudokuMatrix = new TextBox[9, 9];

// 循环把一维数组的元素映射到二维矩阵里
for (int row = 0; row < 9; row++)
{
    for (int col = 0; col < 9; col++)
    {
        // 一维数组的索引 = 行号×9 + 列号
        sudokuMatrix[row, col] = tb[row * 9 + col];
    }
}

第二步:通过二维矩阵修改TextBox文本

现在你就可以用行号+列号来定位数独里的单元格了(注意索引从0开始,比如第1行第1列对应row=0, col=0):

// 修改第3行第4列(索引row=2, col=3)的文本为"7"
sudokuMatrix[2, 3].Text = "7";

// 清空第5行第5列的文本
sudokuMatrix[4, 4].Text = string.Empty;

小提醒

不管用哪种方式,都要确保数组/矩阵里的TextBox引用不是null,不然会抛出空引用异常!另外如果是在非UI线程里修改(比如后台计算完更新界面),记得用Invoke切换到UI线程操作,比如:

if (tb[0].InvokeRequired)
{
    tb[0].Invoke(new Action(() => tb[0].Text = "5"));
}
else
{
    tb[0].Text = "5";
}

内容的提问来源于stack exchange,提问作者Ahmad Alshaib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:53:33