スマート デバイス プロジェクトでコントロールを長時間描画することに問題があります。
アプリケーションをフリーズするコードは次の~11s
とおりです。
SAdr = this.ExecuteSQL("select * from dba." + table);
while (SAdr.Read())
{
PictureBox pBox = new PictureBox();
pBox.Image = Program.ByteArrayToImage((byte[])SAdr["IMGDATA"]);
pBox.Name = String.Format("pictureBox{0}#{1}",nameKey ,Int16.Parse(SAdr[colName].ToString()));
pBox.Width = pBox.Height = size;
pBox.Left = marginL;
pBox.Top = marginT;
pBox.SizeMode = PictureBoxSizeMode.StretchImage;
pBox.Click += new EventHandler(pBoxTow_Click);
if (counter < cols)
marginL += size + space;
else
{
marginL = 10;
marginT += size + space;
counter = 0;
}
panel.Controls.Add(pBox);
counter++;
}
panelCenter.Controls.Clear();
panelCenter.Controls.Add(panel);
SAdr = this.ExecuteSQL("select * from dba." + table);
この時間は、行から行への測定panelCenter.Controls.Clear();
です。
このコードを改善する方法はありますか?