在Win32 API
中BS_GROUPBOX
只会创建一个'按钮'这基本上是作为一个组绘制的,它不能作为任何其他控件的容器。
在WinForms中,这个概念被改变了,而GroupBox实际上是一个容器。
我将一个旧的Win32
应用移植到WinForms
,我通过解析Win32 API
对话框定义字符串在运行时对话框表单中生成该应用。一切正常,除了这些groupBoxes,我在.NET世界中找不到替代品。
我如何获得一个没有.NET GroupBox
所有权的Win32 GroupBox的控件?
THX
答案 0 :(得分:0)
毕竟我通过在.NET中创建透明GroupBox解决了这个问题。这是代码。
public sealed class IGTransparentGroupBox : GroupBox
{
public IGTransparentGroupBox()
{
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
BackColor = Color.Transparent;
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle = cp.ExStyle | 0x20;
return cp;
}
}
protected override void OnBackColorChanged(EventArgs e)
{
Parent?.Invalidate(Bounds, true);
base.OnBackColorChanged(e);
}
protected override void OnParentBackColorChanged(EventArgs e)
{
Invalidate();
base.OnParentBackColorChanged(e);
}
}