我们目前正在努力完成一项功课。 老师给我们的任务是制作由文本框组成的类似数独的WFA应用程序。 我已经做了一行和colummns highlighed,但我需要突出显示子方块。 这是我的代码:
TextBox box = (TextBox)sender;
id = box.TabIndex;
row = Convert.ToInt32(Math.Ceiling(id / 9) * 9);
min = row - 8;
col = Convert.ToInt32((id % 9));
if (col == 0) col = 9;
col = col + 72;
tb_clear(); // function to un-highlight the clicked tb
foreach (TextBox tb in this.Controls)
{
if (tb.TabIndex == row)
{
tb.BackColor = Color.PowderBlue;
if (row != min) row--;
}
if (tb.TabIndex == col)
{
tb.BackColor = Color.PowderBlue;
col -= 9;
}
}
}
以下是表格形式:
这就是我想要的样子:
谢谢,fusionekk。
答案 0 :(得分:2)
您可以将您的sudoku分成3x3 quares,并在运行突出显示代码之前手动将每个文本框或(rowindex,columnindx)的每个索引元组分配给其中一个。然后突出显示同一方块中的所有文本框。
或者您可以尝试找出一个数学属性,任何给定方块的所有索引元组都有共同点,并突出显示共享该属性的所有文本框。
答案 1 :(得分:2)
看一下下表:
现在假设i
将是我们的行索引,j
将是我们的列索引。因此,位置i = 3
和j = 5
将是
现在更好地看一下我们的表格:它分为3x3个正方形的扇区,它有六行六列。
如果我们将行或列索引除以3,我们会得到一个0到2之间的数字(因为我们的最大i
或j
是6 - 在你的情况下,它介于0和0之间) 3,因为你的指数达到9)。
在下图中,您可以更好地了解此值如何更改
所以你可以做的是获取i
的行(j
)和列(SelectedItem
)的索引并将它们除以3。
i
= 1& j
= 3:
i
= 4& j
= 4: