私は以下のようなWinFormを持っています。本質的にUser Control
とFlowLayoutPanel
を使用してDataGridView
を記入します。DataGridViewでUserControlの背景イメージを使用して点滅しますか?
ユーザーコントロールがDataTable
とUCのBackgroundImage
プロパティにバインドされている3つのLabels
もDataTable
に応じて設定されています。
これはForm
です:
public partial class Form1 : Form
{
DataGridView dataGridView1 = new DataGridView();
DataTable DT = null;
public Form1()
{
InitializeComponent();
dataGridView1.DataSourceChanged += dataGridView1_DataSourceChanged;
}
private void button1_Click(object sender, EventArgs e)
{
DT = GetRooms();
dataGridView1.DataSource = DT;
}
private void dataGridView1_DataSourceChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)dataGridView1.DataSource;
flowLayoutPanel1.Controls.Clear();
foreach (DataRow row in dt.Rows)
{
UCBind ucb = new UCBind(row, imageList1);
flowLayoutPanel1.Controls.Add(ucb);
}
}
}
と、これはUser Control
です:
public partial class UCBind : UserControl
{
ImageList imgList { get; set; }
public UCBind()
{
InitializeComponent();
}
public UCBind(DataRow row, ImageList imglist)
{
InitializeComponent();
if (row != null)
{
imgList = imglist;
DisplayData(row);
}
}
public void DisplayData(DataRow row)
{
label1.Text = row.Field<string>(7) + "";
label2.Text = row.Field<string>(8);
label3.Text = row.Field<string>(9);
BackgroundImage = imgList.Images[0]; // I just display an image here
}
}
問題は、ラベルがある背景の一部にちらつきのかなりがあるということですユーザーコントロールの上部にあります。それは最終的に自分自身を修正し、すべてが正しいように見えますが、ちらつきが非常に顕著である:それは正しく見える程度秒後
はこのちらつきを解消する方法はありますか?私はまた、flowLayoutPanel
AutoScroll
をtrueに設定しています。また、何トンものちらつきがあります。
私はthis solutionと同じようなものを試しましたが、DoubleBuffered
プロパティをtrueに設定しましたが、まだまだちらつきがたくさんあります。
ありがとうございました。
は 'flowLayoutPanel1.SuspendLayout()を追加し'と 'flowLayoutPanel1.ResumeLayout()'の前と後のループまたは使用のために行くお試しください'flowLayoutPanel1Controls.AddRange(..)'。また、 'this.Doublebuffered = true;'を 'UCBind'コンストラクタに追加することもお勧めします。 – TaW
'this.Doublebuffered = true'を追加しました。うまくいきました。あなたが望むなら、あなたはそれを答えとして加えることができ、私は受け入れます。助けてくれてありがとう。 – rbhat