为了解决闪烁问题,我使用WS_EX_COMPOSITEDwinforms应用程序.这非常有效,直到选项卡控件获得如此多的选项卡,从而创建"滚动箭头".在这一点上,我的整个应用程序看起来像是不断重绘,到处都是闪烁和闪烁.
为了看看它是否只是我的应用程序,我写了一个简单的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");
}
Run Code Online (Sandbox Code Playgroud)
如果重要的话,我正在运行win7.