65.9K
CodeProject 正在变化。 阅读更多。
Home

仅头文件 GroupBox

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.63/5 (8投票s)

2001年9月22日

MIT

1分钟阅读

viewsIcon

128585

downloadIcon

2057

演示了一个Windows.Forms.GroupBox控件的简单子类,用于仅绘制标题。

Sample Image - headeronlygroupbox.gif

引言

这是一个从Windows.Forms.GroupBox类派生的简单控件示例,用于提供(现在相当标准)的“无框”分隔符,在MFC中有很多类似的例子。

你可能之前没有遇到过的是ControlPaint类的使用。

HeaderOnlyGroupbox

首先,它用于绘制控件的禁用文本

if( Enabled )
{
	Brush br = new SolidBrush( ForeColor );
	e.Graphics.DrawString( Text, Font, br, ClientRectangle, format );
	br.Dispose();
}
else
{
	ControlPaint.DrawStringDisabled( e.Graphics, Text, Font, BackColor,
	                                 ClientRectangle, format );
}

然后,它再次用于获取相对于当前BackColorDarkLightLight控件颜色

Pen forePen = new Pen( ControlPaint.LightLight( BackColor ), SystemInformation.BorderSize.Height );
Pen forePenDark = new Pen( ControlPaint.Dark( BackColor ), SystemInformation.BorderSize.Height );

基本上就是这些了。

使用该类

在你的代码中,它只是GroupBox的直接替代品

如果你使用的是VS.NET IDE,事情就没那么简单了(至少对我来说是这样)。我找不到一种方法让工具箱将该控件识别为它理解的东西。如果有人有任何想法,请与我联系。

但是,绕过它很容易。只需将一个常规的GroupBox拖放到你的窗体上。然后,切换到代码编辑器,并将代码中的两个GroupBox实例替换为HeaderGroupBox(不要忘记适当地限定命名空间)。你可以继续使用窗体编辑器,它会很好地识别我们的新渲染。

© . All rights reserved.