Я использую tablelayoutpanel
в своем проекте WinForm, он медленно реагирует на события. Я сослался на эту ссылку, чтобы ускорить tablelayoutpanel
рендеринг .
В моем коде все ячейки в tablelayoutpanel имеют одинаковый размер (100%), я добавил picturebox
в каждую ячейку, и это SizeMode на растяжение. Количество ячеек всего 9, и когда я изменяю размер панели, это происходит медленно.
Код показан ниже. . Если я создам 300 ячеек, изменение размера займет 4 секунды.
Void change_tableLayout(int num) //num =9
{
CoTableLayoutPanel ctlp = gcnew CoTableLayoutPanel(); //inherited tablelayoutpanel as described in above link
global_ctlp.Cursor = System.Windows.Forms.Cursors.WaitCursor;
num = Math.Sqrt(num);
global_ctlp.Controls.Clear();
global_ctlp.RowStyles.Clear();
global_ctlp.ColumnCount = num;
global_ctlp.RowCount = num;
for(int i = 0; i < num; i++) //row cell
{
RowStyle rs = gcnew RowStyle(SizeType::Percent, 50);
global_ctlp.RowStyles.Add(rs);
for (int j = 0; j < num; j++) //column cell
{
global_ctlp.ColumnStyles.Add(gcnew ColumnStyle(SizeType.Percent, 50));
PictureBox pictureBox1 = gcnew PictureBox();
pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
pictureBox1.Image = Image.FromFile("image_path");
global_ctlp.Controls.Add(pictureBox1, i, j);
pictureBox1.Margin = System.Windows.Forms.Padding(0);
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
}
}
global_ctlp.Cursor = System.Windows.Forms.Cursors.Default;
}
Можно ли это улучшить дальше. Как мне сделать это быстрее? или Есть ли лучший компонент, кроме tablelayoutpanel
.