5

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

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

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

[编辑]

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

这是窗口最初的样子:

形成初始状态

这是我最小化它然后恢复它后窗口的外观:

最小化,然后恢复

注意TabPage背景颜色的变化。

4

3 回答 3

8

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

于 2012-11-12T20:10:02.770 回答
5

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

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

另外,不要将锚设置到所有侧面,只需设置DockFill. 通常避免为标签设置大小,只尝试为它们设置锚点。

于 2012-09-09T12:22:23.460 回答
2

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

于 2012-09-14T12:05:54.010 回答