首页 > 解决方案 > 用嵌套循环绘制表格

问题描述

我正在编写一个程序来可视化不同的排序算法。我正在使用 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();
    }

标签: c#winforms

解决方案


推荐阅读