如何更改TabControl的边框颜色和大小?

10

如何改变 TabControl 的边框大小/样式/颜色,使其与表单的背景色融为一体?

在 Visual Studio 中找不到相关属性。这是否可行?


我不太了解您所描述的内容。我现在正在查看一个“TabControl”,我没有看到边框不均匀的情况。更改**TabPage**的Padding属性是否有帮助? - Cody Gray
@Cody 我已经发布了一张截图。 - SpongeBob SquarePants
我不确定如何正确描述这个问题,如果有人理解我的意思,请适当编辑我的问题。 - SpongeBob SquarePants
可能需要使用 OwnerDrawFixed - Momoro
https://stackoverflow.com/questions/30063061/how-can-i-make-a-transparent-tabpage/30064743#30064743 - undefined
显示剩余4条评论
4个回答

9
不适合放在自定义颜色的背景上。你看到的边缘是3D控件使用的标准颜色,如果你没有改变窗体背景色,你通常不会注意到这一点。默认情况下,它们是相同的颜色。
我不知道有什么好办法来解决这个问题。 没有暴露出很多内置选项来自定义其外观。你需要自己绘制和涂色。
访问此页面以获取一些不同的选项和示例代码。我认为Completely OwnerDraw TabControl是你需要的;使用提供的代码并自定义它以满足你的需求。感谢别人已经为你做了所有的工作,因为自己实现这个非常不容易。
还要注意,将更改为“OwnerDrawFixed”将禁用主题。你的控件将看起来像从Windows 95中直接取出,而不是以Luna或Aero主题样式绘制。如果你完全自定义如何绘制它,那没关系,但如果你只想改变背景颜色,那就麻烦了。

@abcd:当然可以;很抱歉这不像你所希望的那样容易。一般来说,WinForms控件并不是为自定义颜色而设计的;默认情况下,它们会遵循用户当前的Windows主题。我个人喜欢这种方式。如果我恰好讨厌蓝色,并且已经将默认主题中所有蓝色实例更改为绿色或红色,而你的应用程序却涂满了蓝色,那么我可能会感到不太高兴。不尝试修改内置控件的颜色不仅可以减少你的工作量,还可以保持更可预测的用户体验。 - Cody Gray
别担心,这个应用程序是完全可定制的,他或她可以更改颜色主题、背景图片、更改边框大小、更改字体大小...我能想到的一切 :) - SpongeBob SquarePants
适用于.NET Core 5 Winforms。非常感谢您指出这一点!我应该创建一个带有相应信用的Github存储库,因为这是宝贵的。 - Ladrillo

3

如果您想隐藏TabControl的边框并使其与表单的背景颜色融合,可以将TabControl放在类似“Panel”控件的容器中,并将TabControl的大小设置为大于Panel控件的大小,但这样也会遮盖选项卡按钮。对于此问题,您可以为每个选项卡添加按钮,将按钮的单击事件设置为更改TabControl的SelectedTab属性。 注意:您可以将TabControl保留在可以在设计时更改选项卡的位置,然后在窗体的Load事件上添加以下简短的代码以在运行时隐藏选项卡按钮:

Private Sub Form_Load(sender As Object, e As EventArgs) Handles Me.Load

TabControl.ItemSize = New Size(0, 1)
TabControl.SizeMode = TabSizeMode.Fixed

End Sub

经过大约20次尝试使用自定义类,这个解决方案只花了我5分钟...唯一需要注意的是,您需要一个调整大小事件来调整面板,以避免TabControl变得奇怪。 - A.bakker

0
一个更简单的方法是将选项卡控件放置在一个稍小的面板上。选项卡控件的边框将不会显示出来,然后您可以根据需要自定义面板的边框。

-3
Me.TabPage1.BackColor = Color.Blue

试试这个,对你会有帮助的。


3
不,那会改变TabPage的颜色,而不是容器控件。你仍然会看到边缘周围的边框。他已经在截图中设置了TabPage的自定义颜色。 - Cody Gray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接