linq 解决winForm中控件CheckedListBox操作的问题。(转载)
1.获取CheckedListBox选中项的文本的字符串,并用分隔符连接。系统没有提供相应的属性,方法。
这里我们利用3.0的特性给其来个扩展方法,如下:
{
string result = box.CheckedItems.Cast<object>().Aggregate(string.Empty, (current, checkedItem) => current + (box.GetItemText(checkedItem) + "/"));
if (result.Length > 0) result = result.TrimEnd(new char[] {'/'});
return result;
}
分隔符这个可以放如参数中,更灵活的变化分隔符。
2.在得知CheckedListBox绑定list对象的某个属性的集合之后来选中list中的项目。如问题1中,返回的字符串,在得到字符串后如何初始化选中状态。
{
for (int i = 0; i < box.Items.Count;i++ )
{
foreach (string name in names)
{
if (box.GetItemText(box.Items[i]) == name)
{
box.SetItemChecked(i, true);
}
}
}
}
public static void SetCheckedItmsByNames(this CheckedListBox box, string names)
{
if(string.IsNullOrEmpty(names)) return;
string[] name = names.Split(new char[] {'/'});
SetCheckedItmsByNames(box,name);
}
ids = ComFunction.GetNamesOrIdsFromIEnumerable(ChcckedListBox.DataSource as IEnumerable<b_station>,
(w, s) => w.name.ToString() == s ? w.id.ToString() : string.Empty,
names);
//已知ids,取names
ids = ComFunction.GetNamesOrIdsFromIEnumerable(ChcckedListBox.DataSource as IEnumerable<b_station>,
(w, s) => w.id.ToString() == s ? w.name.ToString() : string.Empty,
names);
实现方法如下:
{
string result = string.Empty;
if (string.IsNullOrEmpty(ids)||list==null)
return result;
string[] id = ids.Split(new[]{'/'});
foreach (string s in id)
{
string temp;
foreach (T model in list)
{
temp = func(model, s);
if (string.IsNullOrEmpty(temp)) continue;
result += string.Format("{0}/", temp);
break;
}
}
if (result.Length > 0)
result = result.TrimEnd(new[] {'/'});
return result;
}
通过遍历ids对应的元素和list集合中的元素利用func方法进行比较确认是否符合要求,取得结果。当时主要是很多类型的对象集合需要绑定到CheckedListBox进行操作,而设计的时候又有很多ids,或者names,或者有其一。乱啊。
这次开发主要负责代码实现,没有参与需求和设计,写代码的心思就多了,所以对其他的控件也有提炼了比较多的通用方法和封装(如combobox的搜索效果,支持模糊匹配,like ‘%word%’)等
转自:
转载于:https://www.cnblogs.com/johnwonder/archive/2010/12/22/1913373.html
linq 解决winForm中控件CheckedListBox操作的问题。(转载)相关推荐
- WinCE5.0移动平台开发笔记(c#中使用多线程访问winform中控件的若干问题(zt))
本文转载于:http://www.cnblogs.com/zhaotiantang/archive/2009/03/17/1414135.html 我们在做winform应用的时候,大部分情况下都会碰 ...
- c#中使用多线程访问winform中控件的若干问题
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...
- java插件相对布局,C#Winform中控件的布局思想
windows窗体应用程序的控件都派生自Control类,并继承了许多通用成员,下面介绍Control类的一些基本特征,了解这些能够大致知道控件是如何实现在窗体中布局的. Achor 指示在控件的容器 ...
- WinForm控件CheckedListBox
以下代码中cbList_IssueStatus.cbList_QualityIndicator是CheckedListBox控件 1.绑定数据源 /// <summary>/// 初始化问 ...
- Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决
Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...
- Repeater 操作HeaderTemplat或FooterTemplat模板中控件
获取HeaderTemplat模板中控件 LinkBtn = rp.Controls[0].FindControl("LinkBtnMoreDel") as LinkButton; ...
- C# Winform控件对透明图片重叠时导致图片不透明的解决方法
C# Winform控件对透明图片重叠时导致图片不透明的解决方法 参考文章: (1)C# Winform控件对透明图片重叠时导致图片不透明的解决方法 (2)https://www.cnblogs.co ...
- VS2010开发MFC时工具箱中控件不见了的解决方法
VS2010开发MFC时突然发现工具箱中控件不见了,该怎么调出工具箱中的控件呢? 1.调出资源视图,如果有资源视图,则跳过本步骤 点击菜单栏:视图->资源视图,就能调出资源视图了 2.调出工具箱 ...
- 基于C#的GIS开发20210426之类库同名类、制作winform控件、建立控件之间的关联、自己制作控件、自己控件引入项目、显示磁盘文件夹、磁盘文件与picturebox建立关系、图像拉伸
C#知识点与控件的制作 一.C#中多个类库中有同名类,区分问题 二.制作最简单的winform控件 1.拖动加载 事件代理 筛选器 2.显示属性.事件,及其修改 常见控件属性介绍 窗体常用的方法 常见 ...
最新文章
- 再谈 iptables 防火墙的 指令配置
- 试图理解80836实模式转变为保护模式
- linux配置tomcat内存配置文件,Linux与Windows下tomcat内存设置
- 用java正则表达式验证字符串(邮箱与网址)
- 实战|全程分析js到getshell
- Team Foundation Server 2010 安装、部署与配置(七):创建 Team Project 时的一个 Issue:TF218027 .
- 如何不使用让menu控件不回发(postback)
- Amber Group散户投资APP资管规模超10亿美元
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法...
- 3.3 Spark概述
- hyperledger的个人分享
- 【BLE MIDI】MIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )
- Python+Django开发微信公众号后台
- 将多个excel文件合并为:一个excel文件的多个sheet页【方法技巧】
- 内网计算机如何在线查找mac,查询局域网内全部电脑IP和mac地址
- 安卓逆向_6 --- Dalvik 字节码、Smali 详解
- CSDN博客排名前15名
- 华为荣耀android进入,EMUI 9.1公测招募开启 华为荣耀14款机型获支持
- 码元速率估计-速率信号法
- 对接钉钉消息通知_接入钉钉API发送企业消息
热门文章
- 计算机怎么没有桌面文件夹名称大全,你的电脑文件总是找不到?是时候学习文件夹分类整理了...
- centos7.4编译mysql5.6,centos7编译安装mysql5.6
- linux安装mysql启动失败的原因_爱在linux系统安装mysql启动失败如何处理?
- axture动画原型制作_Axure制作原型-基础操作
- 如何在虚拟linux环境运行python_Conda(Python)虚拟环境不能从Windows移植到Linux
- 允许跨域访问_PHP设置多域名允许跨域访问
- 视频光端机音频出现噪音是为何?
- html引入latex,如何在html文件中使用MathJax或LaTex?
- linux rcu机制,Linux RCU机制详解 (透彻)
- Ollydbg使用教程学习总结(四)