c# - 用嵌套循环绘制表格
问题描述
我正在编写一个程序来可视化不同的排序算法。我正在使用 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();
}
解决方案
推荐阅读
- javascript - 如何获得动画但仍然隐藏ol?
- javascript - 是否有针对 Chrome ~70 的最近更改的 --disable-web-security 修复程序?
- javascript - 如何以角度匹配数组
- android - 如何在文本上方排列菜单项图标
- android - 如何解决 Android Studio 中的这些错误
- python - 第二个 y 轴和垂直线
- regex - 正则表达式匹配十六进制和整数
- angular - 在下面描述的情况下,RxJS 内存是否有效?
- signalr - Signalr with sql server-页面加载时出现 401 Un-Authorization Error(页面在 7-8 分钟内加载)
- java - 无法启动部署在 websphere 8.5.5 上的 springboot 应用程序