2010-12-13 58 views
0

我有一個主窗體,其底部有一個StatusStrip。 在這個地帶,我顯示一個標籤,其中包含有關上次操作的信息。 這是這樣完成的:StatusStrip導致backgroundflickering

在窗體構造函數:

console.added += new EventHandler<Eventargs>(showlast); 

console.added是一個自定義事件,即每一個東西被添加到控制檯列表時執行。 下一步eventfunction:

private void showlast(object sender, EventArgs e) 
{ 
    statusStripLabel1.Text = console.clist.Last().ToString().Replace('\t',''); 
} 

而CLIST是包含我的控制檯項靜態類控制檯的listelement。

現在發生的情況是:如果我在mainform上顯示包含代碼的其他窗體,每次控制檯更新時,控制檯都會向控制檯添加條目,背景中的主窗體會閃爍一次 - 就像它再次加載一樣。由於主窗體是全屏幕和大多數其他形式是相當工具窗口,這不能監督:)

你知道任何方式可能不會加載整個形式新條帶更新時? (如果這是原因?)。其他方面,我只需要刪除帶 - 但當然我想保留它:)

感謝您提前的答案!

+0

檢查StatusStrip的Resize事件是否正在觸發。 – 2010-12-13 14:50:29

回答

0

有幾件事情,你可以嘗試:在Form設置DoubleBuffered = 'True'

1)。

2)在設置statusStripLabel1.Text之前,請檢查現有文本是否不相同。

+0

感謝您的快速回答 - 但它並沒有做到這一點......我之前並不知道DoubleBuffered,並且描述完美,但是正如我所說的那樣,它並不奏效。現在,真正閃爍的東西是我的主要形式背景圖片......它實際上是在構造函數中賦值的,而不是在load()方法中賦值的,但似乎並沒有改變任何東西。哦,並檢查文本的重複性將無法正常工作,因爲它(幾乎)不會一樣。 – Lorenz 2010-12-13 10:22:37

+0

我把第二點放在第二點的原因是,如果有任何頻繁調用該方法的值相同,則刪除它。 – decyclone 2010-12-13 10:59:31