当我调整表单大小时,.NET WinForms TabPage
没有完全重新绘制其背景的原因吗?它应该是完全白色的(在Windows 7中),但是一部分仍然是灰色的(SystemColors.Control
,最有可能)。每当我点击最大化按钮时,当前可见的TabPage
背景都不会被重绘。此外,如果我调整大小,我需要将表单移动到屏幕边界以便绘制它。
如果我最小化然后恢复表单,则会发生同样的事情。在这种情况下,TabPage
背景保持灰色。子控件正确呈现(例如,标签保持其白色背景)。
我使用的是Windows 7 32位,.NET 3.5。使用Visual Studio设计器添加了选项卡控件,并包含几个标签和两个文本框。我没有更改任何与绘制消息相关的本机样式标志。
[编辑]
我创建了一个测试项目,源是uploaded here。
这就是窗口最初的样子:
这是我最小化然后恢复它后窗口的样子:
请注意TabPage
背景颜色的变化。
答案 0 :(得分:7)
我通过在tabControl的ClientSizeChanged方法中添加对tabControl.Refresh()的调用来修复此问题。请注意,这是针对整个选项卡控件而不是每个单独的选项卡页。
答案 1 :(得分:5)
好的,我可以通过以下步骤来解决您的问题:
对于tabPage
设置UseVisualStyleBackColor
到False
,只需将其BackColor
设置为您想要的颜色,在这种情况下White
也可以将Dock
设置为Fill
,而不是将锚设置到所有方面。
通常避免设置标签的大小,只为它们尝试锚点。
答案 2 :(得分:2)
此视觉样式错误已在.NET 4.0中修复。