如何更改所选 TabPage 的字体和/或颜色?
Posted
技术标签:
【中文标题】如何更改所选 TabPage 的字体和/或颜色?【英文标题】:How to change the Font and/or Color of a selected TabPage? 【发布时间】:2011-03-17 11:15:38 【问题描述】:我已经用谷歌搜索、测试等几个小时了,我的出发点是正确的。 WinForms TabControl
糟透了...有没有人有提示或代码可以做到,所以当我选择 TabPage
时,字体或颜色会发生变化?
我弄乱了绘图命令,虽然它确实有效,但它会绘制边框/背景,因此它们看起来非常旧/过时。
这基本上是针对我正在使用的简单选项卡文本编辑器,当控件中的 TextBox
发生更改时,我可以使用红色字体更新关联选项卡,或者将其加粗以指示 @ 上的 TextBox
987654325@已修改。
我绝对愿意接受替代 TabControl
,只要它们是免费的并且带有 VB.Net 示例。
这是在 VB.Net 2008 Express 中。
【问题讨论】:
这是 Winforms、ASP、AjaxControlToolkit、WPF 还是其他?您可以谈论许多不同的选项卡控件... 很抱歉,它是为 Winforms 设计的(它是一个 Windows 应用程序) 【参考方案1】:将选项卡控件的 DrawMode 设置为 OwnerDrawFixed 并自己绘制选项卡以响应 DrawItem 事件。
【讨论】:
【参考方案2】:将 TabControl 绘制模式设置为 OwnerDrawFixed,然后创建一个事件处理程序来绘制选项卡以响应 DrawItem 事件。 例如
Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
Dim tabctl As TabControl = DirectCast(sender, TabControl)
Dim g As Graphics = e.Graphics
Dim font As Font = tabctl.Font
Dim brush As New SolidBrush(Color.Black)
tabTextArea = RectangleF.op_Implicit(tabctl.GetTabRect(e.Index))
If tabctl.SelectedIndex = e.Index Then
font = New Font(font, FontStyle.Bold)
brush = New SolidBrush(Color.Red)
End If
g.DrawString(tabctl.TabPages(e.Index).Text, font, brush, tabTextArea)
End Sub
【讨论】:
效果很好,但它也重新设置了实际选项卡的外观(使其看起来像 1995 年的样式),而不是默认的 2005 年选项卡样式。无论如何只更改文本而不是实际的选项卡? 不容易,据我所知,没有一个选项只会影响文本。一旦将 Drawmode 设置为 OwnerDrawFixed,则事件处理程序负责选项卡的外观,我不知道如何让它使用 XP 主题。以上是关于如何更改所选 TabPage 的字体和/或颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改绑定到 Razor 页面上模型的特定文本的字体颜色?