C#分配给具有多个NumericUpdown对象的数组

C#分配给具有多个NumericUpdown对象的数组,c#,arrays,object,numericupdown,C#,Arrays,Object,Numericupdown,好的,所以我制作了一个数独解算器是为了好玩(是的,我知道已经做了很多次了),所以为了让人们在解算之前输入这些值,我使用了numericalupdown(确切地说是其中的81个) 我想将它们全部分配到一个数组: int[,] Sudoku = new int[9, 9]; 然后单击“求解”,它要做的第一件事就是将所有值放入数组中: private void button1_Click(object sender, EventArgs e) {

好的,所以我制作了一个数独解算器是为了好玩(是的,我知道已经做了很多次了),所以为了让人们在解算之前输入这些值,我使用了numericalupdown(确切地说是其中的81个) 我想将它们全部分配到一个数组:

        int[,] Sudoku = new int[9, 9];
然后单击“求解”,它要做的第一件事就是将所有值放入数组中:

        private void button1_Click(object sender, EventArgs e)
    {
        for (int x = 0; x < 81; x++)
        {
            for (int y = 0; y < 9; y++)
            {
                if (x-1 == 0)
                {
                    Sudoku[x - 1, y - 1] = Convert.ToInt32(numericUpDown[y].Value);
                }
                else
                {
                    Sudoku[x - 1, y - 1] = Convert.ToInt32(numericUpDown[x][y].Value);
                }
            }
        }

    }
private void按钮1\u单击(对象发送者,事件参数e)
{
对于(int x=0;x<81;x++)
{
对于(int y=0;y<9;y++)
{
如果(x-1==0)
{
数独[x-1,y-1]=Convert.ToInt32(numericUpDown[y].Value);
}
其他的
{
数独[x-1,y-1]=将.Convert.ToInt32(numericUpDown[x][y].值);
}
}
}
}
显然你不能这样做:“numbericupdown[y]”,但这是让你看看我想做什么

有什么想法

谢谢,
Craiggles

我会动态地构建/放置它们,同时将它们放入数组或列表中,但如果它们已经被放置到表单中,您可以将它们添加到通用列表中进行迭代

List<NumericUpDown> nums = new List<NumericUpDown>();
nums.add(numericUpDwown1);
List nums=new List();
nums.add(numericupdown1);

然后你可以计算nums[1]*nums[9]。。。或者随便什么

我想我明白你在做什么。。。两个建议:1)将所有控件放入NumericaUpDown对象数组中。然后,您可以执行numericUpDown[y].Value。否则,2)命名以数字结尾的控件(或类似约定),然后使用反射找到正确的控件并获取其值。

如果将
numericUpDown
控件放入9x9网格中,就像复制结果一样,那么复制值将非常简单

private void button1_Click(object sender, EventArgs e)
{
    for (int x = 0; x < 9; x++)
    {
        for (int y = 0; y < 9; y++)
        {
            Sudoku[x, y] = Convert.ToInt32(numericUpDown[x, y].Value);
        }
    }

}
private void按钮1\u单击(对象发送者,事件参数e)
{
对于(int x=0;x<9;x++)
{
对于(int y=0;y<9;y++)
{
数独[x,y]=Convert.ToInt32(numericUpDown[x,y].Value);
}
}
}

如果控件实际上都被放到窗体上,那么不要这样做,将它们从窗体中删除。使用代码创建它们,以编程方式放置它们,并将它们放入二维数组中。不管怎么说,这是一个学习程序,这是以编程方式而不是仅仅通过拖放来实现GUI的良好实践。

实际上,没有理由不能创建控件并将其存储在各种集合类中,而不仅仅是数组中

我会考虑把它们放在一组反映数独网格结构的集合中。


您可以在表单上动态创建并放置控件,也可以在集合中保存它们。

什么是
numericUpDown
?这是一个
int[][]
?哦,太好了,我真的很喜欢这个主意。但是我该怎么做呢?你能把我链接到一个可以教我的地方吗?@Craigles,当你使用designer构建东西时,它会创建一个
*.designer.cs
文件,它只是C代码。阅读这些代码,你会发现你自己可以做同样的事情。