news 2026/8/15 21:02:59

WinForm应用实战开发指南 - 复选框控件复制小技巧分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WinForm应用实战开发指南 - 复选框控件复制小技巧分享

本人在开发Winform程序中,有一个给复选框赋值和获取值的小技巧,分享讨论一下。

PS:给大家推荐一个C#开发可以用到的界面组件——DevExpress WinForms
,它能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

DevExpress新旧版本帮助文档获取可点击这篇文章查看——>《界面控件DevExpress v26.1帮助文档大全(CHM版本)》

应用场景是这样的,如果你有一些需要使用复选框来呈现内容的时候,如下面两图所示:

以上的切除部分的内容,是采用在GroupBox中放置多个CheckBox的方式;其实这个部分也可以使用Winform控件种的CheckedListBox控件来呈现内容。如下所示。

不管采用那种控件,我们都会涉及到为它赋值的麻烦,我这里封装了一个函数,可以很简单的给控件 赋值,大致代码如下。

CheckBoxListUtil.SetCheck(this.groupRemove, info.切除程度);

那么取控件的内容代码是如何的呢,代码如下:

info.切除程度 = CheckBoxListUtil.GetCheckedItems(this.groupRemove);

赋值和取值通过封装函数调用,都非常简单,也可以重复利用,封装方法函数如下所示。

public class CheckBoxListUtil { /// <summary> /// 如果值列表中有的,根据内容勾选GroupBox里面的成员. /// </summary> /// <param name="group">包含CheckBox控件组的GroupBox控件</param> /// <param name="valueList">逗号分隔的值列表</param> public static void SetCheck(GroupBox group, string valueList) { string[] strtemp = valueList.Split(','); foreach (string str in strtemp) { foreach (Control control in group.Controls) { CheckBox chk = control as CheckBox; if (chk != null && chk.Text == str) { chk.Checked = true; } } } } /// <summary> /// 获取GroupBox控件成员勾选的值 /// </summary> /// <param name="group">包含CheckBox控件组的GroupBox控件</param> /// <returns>返回逗号分隔的值列表</returns> public static string GetCheckedItems(GroupBox group) { string resultList = ""; foreach (Control control in group.Controls) { CheckBox chk = control as CheckBox; if (chk != null && chk.Checked) { resultList += string.Format("{0},", chk.Text); } } return resultList.Trim(','); } /// <summary> /// 如果值列表中有的,根据内容勾选CheckedListBox的成员. /// </summary> /// <param name="cblItems">CheckedListBox控件</param> /// <param name="valueList">逗号分隔的值列表</param> public static void SetCheck(CheckedListBox cblItems, string valueList) { string[] strtemp = valueList.Split(','); foreach (string str in strtemp) { for (int i = 0; i < cblItems.Items.Count; i++) { if (cblItems.GetItemText(cblItems.Items[i]) == str) { cblItems.SetItemChecked(i, true); } } } } /// <summary> /// 获取CheckedListBox控件成员勾选的值 /// </summary> /// <param name="cblItems">CheckedListBox控件</param> /// <returns>返回逗号分隔的值列表</returns> public static string GetCheckedItems(CheckedListBox cblItems) { string resultList = ""; for (int i = 0; i < cblItems.CheckedItems.Count; i++) { if (cblItems.GetItemChecked(i)) { resultList += string.Format("{0},", cblItems.GetItemText(cblItems.Items[i])); } } return resultList.Trim(','); } }

以上代码分为两部分, 其一是对GroupBox的控件组进行操作,第二是对CheckedListBox控件进行操作。

这样在做复选框的时候,就比较方便一点,如我采用第一种GroupBox控件组方式,根据内容勾选的界面如下所示。

应用上面的辅助类函数,如果你是采用GroupBox方案,你就可以随便拖几个CheckBox控件进去就可以了,也犯不着给他取个有意义的名字,因为不管它是张三还是李四,只要它的父亲是GroupBox就没有问题了。

本文转载自:博客园 - 伍华聪

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 21:02:18

【使用者手册】手动改善IntelliJ IDEA和Scala插件性能

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 在…

作者头像 李华
网站建设 2026/8/15 20:52:32

flask-apispec核心组件解析:webargs、marshmallow与Swagger无缝集成

flask-apispec核心组件解析&#xff1a;webargs、marshmallow与Swagger无缝集成 【免费下载链接】flask-apispec 项目地址: https://gitcode.com/gh_mirrors/fl/flask-apispec flask-apispec是一个轻量级的Flask REST API构建工具&#xff0c;它巧妙整合了webargs请求解…

作者头像 李华
网站建设 2026/8/15 20:51:46

nanoJS源码探秘:100行代码如何实现18个DOM操作API?

nanoJS源码探秘&#xff1a;100行代码如何实现18个DOM操作API&#xff1f; 【免费下载链接】nanoJS Minimal standalone JS library for DOM manipulation 项目地址: https://gitcode.com/gh_mirrors/na/nanoJS nanoJS是一个极简的独立JavaScript库&#xff0c;专为DOM操…

作者头像 李华
网站建设 2026/8/15 20:50:29

Shovel命令行详解:掌握--verbose调试与--dry-run预览的实用技巧

Shovel命令行详解&#xff1a;掌握--verbose调试与--dry-run预览的实用技巧 【免费下载链接】shovel Rake, for Python 项目地址: https://gitcode.com/gh_mirrors/sho/shovel Shovel是一款类似Rake的Python任务管理工具&#xff0c;能将Python函数轻松转换为命令行可执…

作者头像 李华