私はWindowsフォームで使用するtableLayoutPanel
を持っています。コントロールには、SQL Serverデータを保持するdatatable
からデータが入力されます。私はすでにselect
ステートメントが問題ではないことを確認しました。tableLayoutPanelのデータを最適化する方法はありますか?
データテーブルが頻繁に更新されるため、tableLayoutPanel
も頻繁に更新されます。基本的にうまくいきますが、少し遅くなり、ちらつきが目立つようになります。
私はコントロールをリフレッシュする必要が毎回に、このコードが実行される:
public void FillTlp()
{
tableLayoutPanel1.Controls.Clear();
tableLayoutPanel1.ColumnStyles.Clear();
foreach (DataRow r in DT.Rows)
{
UcColor button = new UcColor(r);
tableLayoutPanel1.Controls.Add(button);//, colNumNew, rowNum);
}
this.Controls.Add(tableLayoutPanel1);
}
常に8行を持つことになりますので、私は一度だけフォームのコンストラクタに以下のコードを実行し、私は表示されません多くのメリットがあります:
public FormDoctorMonitor()
{
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.RowCount = 8;
FillTlp();
}
tableLayoutPanel
の移植を最適化するにはどうすればよいですか?
ありがとうございました。
明白な質問:なぜ「リフレッシュ」は実際には「最初から構築する」のですか?変更が必要なものだけを変更してください。 – DonBoitnott
[MCVE](http://stackoverflow.com/help/mcve)を持たないと、問題の内容を言うのが難しいです。ちょうどいくつかのヒント:** 1 - **パネルに新しいコントロールを追加する前に、先に追加したコントロールを最初に 'Dispose 'します。現在のところ、それらは削除するだけです。削除と廃棄の両方を実行する必要があります。 ** 2 - **コントロールを削除する前に 'panel.SuspendLayout();'を呼び出し、新しいコントロールを追加した後に 'panel.ResumeLayout(true);'を呼び出すと役に立ちます。 –
@RezaAghaei、 'tableLayoutPanel1.Dispose();'をどこに追加すればよいですか?私が最初にそれを追加すると、 '実行できないオブジェクトにアクセスできません'というランタイムエラーが発生します。あなたの提案でサンプルコードを修正しました。彼らが正しい場所にいるかどうか教えてください。 – rbhat