标题为复选框的分组框

Posted

技术标签:

【中文标题】标题为复选框的分组框【英文标题】:Group box with title as Check box 【发布时间】:2009-06-26 08:19:31 【问题描述】:

我在 Windows XP 平台上使用 Visual Studio 6.0(带有 MFC 的 VC++)。我正在尝试创建一个以组框标题作为复选框的组框。我的意图是:如果启用了复选框,则应该启用组框内的控件;否则禁用。

这可以实现吗?如果是,请给我一些指示。

谢谢。

【问题讨论】:

【参考方案1】:

您可以尝试一些事情,具体取决于您希望坚持自己的想法的真实程度以及您准备投入多少工作:

简单方法

使用普通的分组框,然后在其中将第一项设为复选框。这很容易实现,但您失去了将复选框作为标题的目标。

时髦的画法1

使用普通的分组框,然后在您知道标题所在的空间中,放置您的复选框。您将不得不执行一些棘手的计算以使其很好地适应并很好地绘制而不会闪烁。

时髦的画法2

在组框上使用某种形式的superclass 或subclass/subclass。您可以覆盖 WM_PAINT 处理程序以仅在组框的框架中绘制。在您知道标题的位置放置一个普通复选框。这应该会更好,因为您将对绘图有更多的控制权,但要正确可能会很棘手。根据我的经验,子类化比超类化实现的风险更低。

【讨论】:

我已经多次使用Funky Drawing Method 1。确保组框的文本为空白,并注意 Tab 键顺序,否则控件将无法正确绘制。【参考方案2】:

您在使用对话框编辑器吗?如果是这样,请放下组合框。接下来,在它的顶部,将一个复选框放在组框的行上。编辑资源以设置 Z 顺序,或在代码中进行。您希望复选框位于组框的顶部。为复选框添加处理程序并根据复选框状态启用/禁用控件。

【讨论】:

【参考方案3】:

几年前我写了一个名为 CGroupCheck 的代码,它可以从 CodeProject 获得:http://www.codeproject.com/KB/buttons/groupcheck123.aspx

【讨论】:

以上是关于标题为复选框的分组框的主要内容,如果未能解决你的问题,请参考以下文章

form中 单选框 input[type="radio"] 分组

C# 怎样判断DEV GridView 中选中的哪一行是分组的标题行

如何在DevExpress的GridView控件里面添加多选框的列

窗体效果

单选框RadioButton的使用

winform控件大全