运维开发网

visual-C语言 如何使MFC复选框为只读但保持文本启用?

运维开发网 https://www.qedev.com 2020-05-11 09:56 出处:网络 作者:运维开发网整理
似乎通过Disabled属性禁用复选框也会使标题变灰.有谁知道如何保持标题启用但禁用输入? 编辑 基于Paul的想法,我已经完成了以下操作(现在我发现静态标签和复选框具有透明属性). >添加了几个复选框. >将复选框标题设置为空. >将复选框透明属性设置为true. >在复选框旁边添加几个标签. >将标签的透明属性更改为true. >展开复选框以包含标签(因此单击标签将触发复选框). 但是,这给了
似乎通过Disabled属性禁用复选框也会使标题变灰.有谁知道如何保持标题启用但禁用输入?

编辑

基于Paul的想法,我已经完成了以下操作(现在我发现静态标签和复选框具有透明属性).

>添加了几个复选框.

>将复选框标题设置为空.

>将复选框透明属性设置为true.

>在复选框旁边添加几个标签.

>将标签的透明属性更改为true.

>展开复选框以包含标签(因此单击标签将触发复选框).

但是,这给了我非常奇怪的结果.当我在标签上展开复选框时,它会覆盖标签,即使两者都是透明的.再说一次,我是MFC的新手(我是C#家伙)所以也许我错过了一些东西.

快速而简单的解决方法是不使用复选框“文本成员(将其设置为”“),将复选框的大小缩小到可点击的方块,只需在复选框旁边放置一个标签即可.

为了获得一点点发烧友,你可以创建一个自定义控件来托管一个复选框和一个可以重用的标签.它也是使自定义复选框按最终用户的预期行为更容易的方式,例如能够在单击标签时将复选框设置为选中或取消选中,以及复选框本身. (简单的解决方案不会自动关联标签和复选框.您可以在表单中对其进行编码,但如果您倾向于重用范例,那么可能会很快变得难看.)

你也可以四处查看第三方复选框控件(那里有很多MFC UI库),但这可能有点过分.

看到这个伪布局:

你有这个:(孤立的复选框控件)

[x "checkbox text"]

像这样放置:(标签控件在复选框旁边对齐)

[x][label: "label text"]

处理标签的点击事件,例如:

void OnLabelClick(...) {
    if (checkBox.Enabled)
        checkBox.Checked = !checkBox.Checked;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消