1

私は、アニメーションgif(アニメーションローディングサークル)を保持できる最初の列であるDataGridViewを持っています。アニメーション部分を機能させるために、100ミリ秒ごとに刻み、このメソッドを呼び出す Forms.Timer を使用します

    private void timGifAnimation_Tick(object sender, EventArgs e)
    {
        if(this.dataGridView1.Rows.Count > 0 && current >= 0 && current < this.dataGridView1.Rows.Count) 
        {
            this.dataGridView1.Rows[current].Cells[0].Value = this.picProcessing.Image;
            this.dataGridView1.InvalidateCell(0, current);
        }
    }

これは、DataGridView を SplitContainer に配置するまではうまくいきました。セルは InvalidateCell の呼び出しで再描画されなくなりました。GIF アニメーションが機能するのは、ウィンドウのサイズが変更されたとき、またはボタンの上にマウスを置いたときだけです (マウスをホバーすると一度再描画され、ボタンの再描画からマウスを離すと、もう一度)。デバッグ時には、上記のメソッドが引き続き呼び出され、セルが再描画されません。

4

1 に答える 1

0

コントロールまたはコントロールの一部を無効にすると、再描画が必要な領域が単純にマークされます。同期再描画を強制するには、コントロールで Update() を呼び出す必要があります。そうしないと、無効化されたセルは、次に描画メッセージが来るたびに再描画されます。

dataGridView1.Update();
于 2012-08-03T13:13:14.533 に答える