WinForms标签页不重新绘制表单大小调整

时间:2012-09-09 10:16:44

标签: .net winforms resize tabcontrol paint

当我调整表单大小时,.NET WinForms TabPage没有完全重新绘制其背景的原因吗?它应该是完全白色的(在Windows 7中),但是一部分仍然是灰色的(SystemColors.Control,最有可能)。每当我点击最大化按钮时,当前可见的TabPage背景都不会被重绘。此外,如果我调整大小,我需要将表单移动到屏幕边界以便绘制它。

如果我最小化然后恢复表单,则会发生同样的事情。在这种情况下,TabPage背景保持灰色。子控件正确呈现(例如,标签保持其白色背景)。

我使用的是Windows 7 32位,.NET 3.5。使用Visual Studio设计器添加了选项卡控件,并包含几个标签和两个文本框。我没有更改任何与绘制消息相关的本机样式标志。

[编辑]

我创建了一个测试项目,源是uploaded here

这就是窗口最初的样子:

Form initial state

这是我最小化然后恢复它后窗口的样子:

Minimized, then restored

请注意TabPage背景颜色的变化。

3 个答案:

答案 0 :(得分:7)

我通过在tabControl的ClientSizeChanged方法中添加对tabControl.Refresh()的调用来修复此问题。请注意,这是针对整个选项卡控件而不是每个单独的选项卡页。

答案 1 :(得分:5)

好的,我可以通过以下步骤来解决您的问题:

对于tabPage设置UseVisualStyleBackColorFalse,只需将其BackColor设置为您想要的颜色,在这种情况下White

也可以将Dock设置为Fill,而不是将锚设置到所有方面。 通常避免设置标签的大小,只为它们尝试锚点。

答案 2 :(得分:2)

此视觉样式错误已在.NET 4.0中修复。