0

私は多くのフォームを開いています (同じ新しいフォームを何度も)。それらはすべてピクチャボックスであり、自動的に更新されます。しかし、複数を起動すると、最後に選択/クリック/アクティブになったフォーム以外のフォームのピクチャボックスが視覚的に更新されません..すべてのコードが正常に動作します。しかし、それらのフォームの 1 つをクリックすると、本来あるべきように更新されます。これにより、より明確になります: http://i50.tinypic.com/2csaooh.jpg よく観察すると (または私はそれを知っています..)、左側の最初のフォームのみが更新され、他の画像ボックスは更新されていません..追加情報が必要な場合。提供いたします。

paint イベントには、多くの e.graphics.draw...(...); が含まれています。コード..それだけです..そして、私は常に背景を更新します(背景としての画像ではなく、背景プロパティを配置します)。

4

1 に答える 1

0

残念ながら、Invalidate()フォーカスされているコントロールでのみ機能します。フォーカスされていないコントロールを強制的に再描画する良い方法はないようです。

ただし、これはかなり汚いですが、この問題はタイマーで解決できます。

private void Form1_Deactivate(object sender, EventArgs e)
{
    t = new System.Threading.Timer(new System.Threading.TimerCallback(t_Tick), null, 0, 100);
}

private void Form1_Activated(object sender, EventArgs e)
{
    t.Dispose();
}

void t_Tick(object sender)
{
    pictureBox1.Invoke((Action)delegate()
    {
        pictureBox1.Update();
    });
}

おそらく、すべてのコントロールを同じウィンドウに追加することを検討する必要があります。あなたのスクリーンショットは、複数のウィンドウが必要なようには見えません。

于 2012-09-26T13:01:40.043 に答える