如何将组框的文本加粗,但不包含其中包含的控件文本?

Rob*_*obC 15 vb.net user-controls containers winforms

我去创建了一个包含大量控件的选项卡,其中大部分都包含在我称之为顶级组框的内容中.现在我决定我希望顶级组框的文本是粗体,但没有别的.但是,当我将顶级组框的字体设置为粗体时,其中包含的所有控件也会变为粗体,这是我不想要的.我可以将每个单独控件的粗体属性设置为false,但似乎应该有一种更简单的方法来执行此操作.有任何想法吗?

我可能错过了一些显而易见的东西,比如一个正在盯着我的群组房产 - 并且如果事实证明是这样的话就道歉.

在此先感谢您的帮助.

Cod*_*ray 26

可以通过在GroupBox的标题上放置标签绕过问题,但我不一定会建议这样做.

一旦了解了正在发生的事情及其发生的原因,就会出现更好的解决方案.问题是控件的字体(以及其他内容)是环境属性,这意味着子控件继承其父/容器控件的属性.因此,如果将GroupBox设置为使用粗体字体,则默认情况下,其所有子控件都会自动继承bold属性.

当然,关键是默认情况下.仅当您未将子项的属性显式设置为其他项时,环境属性才适用.如果您不希望子控件变为粗体,请全部选中它们并关闭粗体.父/容器的设置将不再覆盖新的自定义设置.

为了使事情变得更容易,您可以将Panel控件添加到GroupBox,停靠/锚定它以填充GroupBox控件的整个客户区域,并将其设置为使用标准的非粗体字体.然后,环境控制规则规定您添加到Panel的子控件默认不会是粗体.这样,您只需更改一个控件的font属性,而不是添加到GroupBox的每个子控件.

这比尝试在GroupBox标题上添加Label控件更好的原因是因为GroupBox被设计为包含控件.您可以利用对接和锚定属性来确保所有内容都正确排列,并且您不必在这样做时与设计师对抗,以确保自定义Label正确覆盖GroupBox控件绘制的默认标签.此外,您不会遇到Z顺序问题或者在运行时将其丑陋的头部重新设置其他重绘问题,例如,Label控件意外地隐藏 GroupBox 后面并且没有人可以看到它(以及许多其他潜在的snafus) ).