我正在用winforms编写一个Picross求解程序,其中网格可以调整大小以允许求解不同的大小。我一直在使用 aList<System.Windows.Forms.Label>
来为网格的每个正方形保存一个标签,但是当我将网格的大小调整为 15x15 以上的大小时,为了简单地调整网格的大小往往需要几秒钟。虽然我预计网格大小的快速切换不会经常发生,但我希望网格不会花费 10 秒来填充标签。
System.Windows.Forms.TableLayoutPanel PicrossGrid;
List<System.Windows.Forms.Label> PicrossGridLabel;
private void adjustGridLabel(int newSize)
{
System.Windows.Forms.Label[] temp = new System.Windows.Forms.Label[newSize*newSize];
for (int i = 0; i < newSize; i++)
{
for (int j = 0; j < newSize; j++)
{
temp[i * newSize + j] = new System.Windows.Forms.Label();
temp[i * newSize + j].Anchor = System.Windows.Forms.AnchorStyles.None;
temp[i * newSize + j].AutoSize = true;
temp[i * newSize + j].Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
temp[i * newSize + j].Location = new System.Drawing.Point(i, j);
temp[i * newSize + j].Name = "PicrossGridLabelC" + (i + 1) + "R" + (j + 1);
temp[i * newSize + j].Size = new System.Drawing.Size(24, 30);
temp[i * newSize + j].TabIndex = (i * 5) + j;
temp[i * newSize + j].Text = "X";
temp[i * newSize + j].TextAlign = System.Drawing.ContentAlignment.TopCenter;
PicrossGrid.Controls.Add(temp[i * newSize + j], i, j);
}
}
PicrossGridLabel = temp.ToList();
}
我还放置this.SuspendLayout();
在调用它之前的函数中以防止绘制速度变慢,但它仍然非常慢。有没有更好的方法来解决这个问题或我正在做的可能的疏忽?