Окраска формы с помощью вложенных петель - PullRequest
0 голосов
/ 28 августа 2018

Я пишу программу для визуализации различных алгоритмов сортировки. Я использую Winforms и использую краску формы даже для обновления графиков. У меня проблема в том, что я не могу просто написать метод, который сортирует массив, потому что форма обновляется только после завершения метода. Я пытался использовать таймер в качестве цикла for с глобальными переменными и вызывал Refresh (), но это делает мой код намного менее пригодным для повторного использования и выглядит некрасиво.
Как я могу исправить эту проблему?
Изменить: Чтобы было ясно, форма не блокируется, форма просто не перерисовывает себя.

Edit2: Здесь я сейчас вызываю мои методы сортировки. Мне пришлось заменить внешний цикл for, который вы обычно используете для сортировки массивов, глобальными переменными

        private void Timer_Tick(object sender, EventArgs e)
        {
        switch (sortMethod)
        {
            case "Selection Sort":
                color = Sort.SelectionSort(color, ref i);
                break;
            case "Bubble Sort":
                color = Sort.BubbleSort(color, ref i);
                break;
            case "Cocktail Shaker Sort":
                bool sorted = false;
                color = Sort.CocktailShakerShort(color, ref sorted);
                break;
            case "Gnome Sort":
                if (pos < color.Length)
                {
                    color = Sort.GnomeSort(color, ref pos);
                }
                break;
            default:
                timer.Enabled = false;
                break;
        }
        Invalidate();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...