为了解决闪烁的问题,我求助于WS_EX_COMPOSITED
在 winforms 应用程序中使用。在选项卡控件获得如此多的选项卡以创建“滚动箭头”之前,这非常有效。在这一点上,我的整个应用程序看起来就像它不断重绘,到处闪烁闪烁。
为了查看它是否只是我的应用程序,我编写了一个简单的 winforms 程序来测试它。它所包含的只是一个带有添加选项卡的按钮的选项卡控件,并且它的表单已WS_EX_COMPOSITED
启用......果然,当我单击添加按钮并出现滚动箭头时会发生闪烁。
多行选项卡控件解决了这个问题,但我在应用程序中没有空间来使用它。对于我的测试应用程序来说,代码真的很简单......只是添加了一个标签页和一个按钮,然后在表单中做了:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
private void button1_Click(object sender, EventArgs e)
{
this.tabControl1.TabPages.Add("SomeTab");
}
如果这很重要,我正在运行win7。