2010-12-13 61 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