WinForms - 在WinApi中的groupBox

时间:2016-04-18 21:05:16

标签: c# .net winforms winapi

Win32 APIBS_GROUPBOX只会创建一个'按钮'这基本上是作为一个组绘制的,它不能作为任何其他控件的容器。

在WinForms中,这个概念被改变了,而GroupBox实际上是一个容器。

我将一个旧的Win32应用移植到WinForms,我通过解析Win32 API对话框定义字符串在运行时对话框表单中生成该应用。一切正常,除了这些groupBoxes,我在.NET世界中找不到替代品。

我如何获得一个没有.NET GroupBox所有权的Win32 GroupBox的控件?

THX

1 个答案:

答案 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);
        }
    }