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

WinForms中9×9GridBox行列块列表填充及IDE0059错误求助

解决数独网格控件的列表分组与数值转数组问题

1. 修复IDE0059不必要赋值错误

这个错误的核心原因是你给变量做了无意义的重复赋值——比如先初始化var myRow1List = new List<TextBox>();,之后又重新给它赋值覆盖了初始值,导致第一次的空列表赋值完全没用。

解决方式很简单:直接在初始化时完成列表填充,或者避免冗余的空赋值操作。

2. 正确构建行/列/块的分组列表

因为你用的是自定义GridBox类,建议直接用List<List<GridBox>>来存储分组(而非List<TextBox>),这样能直接访问控件的自定义属性。代码示例:

// 初始化9组行、列、块容器
List<List<GridBox>> rowGroups = new List<List<GridBox>>();
List<List<GridBox>> columnGroups = new List<List<GridBox>>();
List<List<GridBox>> blockGroups = new List<List<GridBox>>();

// 先创建9个空的子列表(对应9行、9列、9块)
for (int i = 0; i < 9; i++)
{
    rowGroups.Add(new List<GridBox>());
    columnGroups.Add(new List<GridBox>());
    blockGroups.Add(new List<GridBox>());
}

// 遍历所有控件,按自定义属性分组
foreach (Control ctrl in this.Controls)
{
    if (ctrl is GridBox box)
    {
        // 注意:如果你的Row/Column/Block属性是1-9的编号,要转为0基索引(0-8)
        int rowIdx = box.Row - 1;
        int colIdx = box.Column - 1;
        int blockIdx = box.Block - 1;

        rowGroups[rowIdx].Add(box);
        columnGroups[colIdx].Add(box);
        blockGroups[blockIdx].Add(box);
    }
}

这样每个分组列表都会被实际填充和使用,不会触发IDE0059错误。

3. 将输入值转换为9×9可空整数数组

遍历所有GridBox,根据控件的行/列属性映射到数组位置,处理输入内容:

// 初始化9×9的目标数组
int?[,] sudokuArray = new int?[9, 9];

foreach (Control ctrl in this.Controls)
{
    if (ctrl is GridBox box)
    {
        int row = box.Row - 1;
        int col = box.Column - 1;

        // 解析输入:有效数字存对应值,空/无效值存0
        if (int.TryParse(box.Text, out int inputNum) && inputNum >= 1 && inputNum <= 9)
        {
            sudokuArray[row, col] = inputNum;
        }
        else
        {
            sudokuArray[row, col] = 0;
        }
    }
}

如果需要用null代表空值,直接把0替换成null即可。

额外提示

  • 确认GridBox的Row/Column/Block属性取值范围(1-9或0-8),索引转换要对应,避免数组越界。
  • 后续遍历行/列/块时,直接通过rowGroups[i]就能获取第i+1行的所有控件,方便数独验证逻辑开发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:35:06