C # Назначить массив со многими объектами NumericUpdown - PullRequest
0 голосов
/ 04 августа 2011

Хорошо, поэтому я делаю решатель судоку для развлечения (да, я знаю, что это уже было сделано много раз), поэтому, чтобы позволить людям вводить туда значения перед решением, я использовал числовое значение downdown (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);
                }
            }
        }

    }

очевидно, что вы не можете сделать: "numbericupdown [y]", но это для вас, чтобы увидеть, что я пытаюсь сделать ....

оооочень мысли?

СПАСИБО, Craiggles

Ответы [ 4 ]

1 голос
/ 04 августа 2011

Если вы поместите свои 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);
        }
    }

}

Если все элементы управления фактически перетаскиваются в форму, то не делайте этого, удалите их из формы.Используйте код для их создания, разместите их программно и поместите в 2d массив.Так как в любом случае это обучающая программа, хорошей практикой является программирование графического интерфейса вместо простого перетаскивания.

0 голосов
/ 04 августа 2011

На самом деле нет никаких причин, по которым вы не можете создавать элементы управления и хранить их в различных классах коллекций - не только в массивах.

Я бы подумал о том, чтобы поместить их в некий структурированный набор коллекций, отражающих структуру сетки судоку.

Вы можете динамически создавать и размещать элементы управления в форме, а также удерживать их в коллекции.

0 голосов
/ 04 августа 2011

Мне кажется, я понимаю, что вы делаете ... Два предложения: 1) поместить все ваши элементы управления в массив объектов NumericaUpDown.Тогда вы можете сделать numericUpDown [y] .Value.В противном случае, 2) назовите элементы управления, заканчивающиеся цифрами (или некоторым подобным соглашением), затем используйте отражение, чтобы найти правильный и получить его значение.

0 голосов
/ 04 августа 2011

Я хотел бы построить / разместить их динамически и в то же время поместить их в массив или список, но если они уже выложены в форму, вы можете просто добавить их в общий список, чтобы выполнить итерации по ним.

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

тогда вы можете вычислить nums [1] * nums [9] ... или что угодно

...