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

Lou*_*Lou 5 .net resize tabcontrol paint winforms

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

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

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

[编辑]

我创建了一个测试项目,源代码在这里上传.

这是窗口最初的样子:

形成初始状态

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

最小化,然后恢复

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

小智 8

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


Sae*_*ani 5

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

对于tabPage设置UseVisualStyleBackColor,False并将其设置BackColor为您想要的颜色,在这种情况下White

而不是将锚设置到所有边,只需设置DockFill.通常避免设置标签的大小,只为它们尝试锚点.