csharp:A Custom CheckedListBox with Datasource
/// <summary>
/// (eraghi)
/// Custom CheckedListBox with binding facilities (Value property)
/// from A Custom CheckedListBox with Datasource http://www.codeproject.com/Articles/22960/A-Custom-CheckedListBox-with-Datasource-Implementa
/// </summary>
[ToolboxBitmap(typeof(CheckedListBox))]
public class DuCheckedListBox : CheckedListBox
{
/// <summary>
/// Default constructor
/// </summary>
public DuCheckedListBox()
{
this.CheckOnClick = true; } /// <summary>
/// Gets or sets the property to display for this CustomControls.CheckedListBox.
///
/// Returns:
/// A System.String specifying the name of an object property that is contained
/// in the collection specified by the CustomControls.CheckedListBox.DataSource
/// property. The default is an empty string ("").
/// </summary>
[DefaultValue("")]
[TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3de65a4a-2b5f-4d9d-88de-bfb692b10f93")]
[Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3de65a4a-2b5f-4d9d-88de-bfb692b10f93", typeof(UITypeEditor))]
[Browsable(true)]
public new string DisplayMember
{
get
{
return base.DisplayMember;
}
set
{
base.DisplayMember = value; }
} /// <summary>
/// Gets or sets the property to get the values for this CustomControls.CheckedListBox.
///
/// Returns:
/// A System.String specifying the name of an object property that is contained
/// in the collection specified by the CustomControls.CheckedListBox.DataSource
/// property. The default is an empty string ("").
/// </summary>
[DefaultValue("")]
[TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3de65a4a-2b5f-4d9d-88de-bfb692b10f93")]
[Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3de65a4a-2b5f-4d9d-88de-bfb692b10f93", typeof(UITypeEditor))]
[Browsable(true)]
public new string ValueMember
{
get
{
return base.ValueMember;
}
set
{
base.ValueMember = value; }
} /// <summary>
/// Gets or sets the data source for this CustomControls.CheckedListBox.
/// Returns:
/// An object that implements the System.Collections.IList or System.ComponentModel.IListSource
/// interfaces, such as a System.Data.DataSet or an System.Array. The default
/// is null.
///
///Exceptions:
/// System.ArgumentException:
/// The assigned value does not implement the System.Collections.IList or System.ComponentModel.IListSource
/// interfaces.
/// </summary>
[DefaultValue("")]
[AttributeProvider(typeof(IListSource))]
[RefreshProperties(RefreshProperties.All)]
[Browsable(true)]
public new object DataSource
{
get
{
return base.DataSource;
}
set
{
base.DataSource = value; }
} /// <summary>
/// Gets and sets an integer array of the values based on checked items values ID
/// </summary>
[Bindable(true), Browsable(true)]
public List<int> ValueList
{
get
{
///Gets checked items id values in a list
List<int> retArray = new List<int>();
PropertyDescriptor prop = null;
PropertyDescriptorCollection propList = this.DataManager.GetItemProperties();
prop = propList.Find(this.ValueMember, false);
object checkedItem;
if (prop != null)
{
for (int i = 0; i < this.Items.Count; i++)
{
if (this.GetItemChecked(i))
{
checkedItem = this.DataManager.List[i];
retArray.Add(Convert.ToInt32(prop.GetValue(checkedItem).ToString()));
}
}
}
return retArray;
} set
{
///Sets checked items base on id values in a list
List<int> myList = value;
PropertyDescriptor prop = null;
PropertyDescriptorCollection propList = this.DataManager.GetItemProperties();
prop = propList.Find(this.ValueMember, false);
object checkedItem;
int intValItem;
int found;
if (prop != null)
{
for (int i = 0; i < this.Items.Count; i++)
{
checkedItem = this.DataManager.List[i];
intValItem = Convert.ToInt32(prop.GetValue(checkedItem).ToString());
found = (from c in myList where c == intValItem select c).Count();
if (found == 1)
this.SetItemCheckState(i, CheckState.Checked);
else
this.SetItemCheckState(i, CheckState.Unchecked);
}
}
}
}
}
测试:
DataTable setData()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "涂聚文");
dt.Rows.Add(2, "Geovin Du");
dt.Rows.Add(3, "geovindu");
dt.Rows.Add(4, "涂鸦王国");
dt.Rows.Add(5, "涂氏");
dt.Rows.Add(6, "张氏");
dt.Rows.Add(7, "郭氏");
dt.Rows.Add(8, "江氏");
return dt;
} /// <summary>
///
/// </summary>
public CheckedlistboxForm()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CheckedlistboxForm_Load(object sender, EventArgs e)
{
this.duCheckedListBox1.DataSource = setData();
this.duCheckedListBox1.DisplayMember = "Name";
this.duCheckedListBox1.ValueMember = "ID";
//设定
bool insideCheckEveryOther = true;
for (int i = 0; i < duCheckedListBox1.Items.Count; i++)
{
// For every other item in the list, set as checked.
if ((i % 2) == 0)
{
// But for each other item that is to be checked, set as being in an
// indeterminate checked state.
if ((i % 4) == 0)
duCheckedListBox1.SetItemCheckState(i, CheckState.Indeterminate);
else
duCheckedListBox1.SetItemChecked(i, true);
}
}
insideCheckEveryOther = false; }
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{ IEnumerator myEnumerator;
myEnumerator = duCheckedListBox1.CheckedIndices.GetEnumerator();
int y;
//选择为全为无选
//while (myEnumerator.MoveNext() != false)
//{
// y = (int)myEnumerator.Current;
// duCheckedListBox1.SetItemChecked(y, false);
//} //foreach (object itemChecked in duCheckedListBox1.CheckedItems)
//{
// MessageBox.Show("Item with title: \"" + itemChecked.ToString() +
// "\", is checked. Checked state is: " +
// duCheckedListBox1.GetItemCheckState(duCheckedListBox1.Items.IndexOf(itemChecked)).ToString() + ".");
//} foreach (DataRowView itemChecked in duCheckedListBox1.CheckedItems)
{
MessageBox.Show("Item with title: \"" + itemChecked[0].ToString() + itemChecked[1].ToString() +
"\", is checked. Checked state is: " +
duCheckedListBox1.GetItemCheckState(duCheckedListBox1.Items.IndexOf(itemChecked)).ToString() + ".");
}
}
设置已选择项:
//2.
List<int> list;
list = new List<int> { 1, 4 };
int value = 0;
//for (int i = 0; i < duCheckedListBox1.Items.Count; i++)
//{
// DataRowView view = duCheckedListBox1.Items[i] as DataRowView;
// value = (int)view["ID"];
// if (list.Contains(value))
// duCheckedListBox1.SetItemChecked(i, true);
//}
for (int i = 0; i < duCheckedListBox1.Items.Count; i++)
{
DataRowView view = duCheckedListBox1.Items[i] as DataRowView;
value = (int)view["ID"];
if (value == 5)
duCheckedListBox1.SetItemChecked(i, true);
}
csharp:A Custom CheckedListBox with Datasource的更多相关文章
- CheckedListBox与下拉框联动代码
private void yewubind(string id) { //给业务类型下拉框绑定业务类型数据 DataTable dtyewu = sb.SelectLast(id, 0); bool ...
- K8s仪表盘
{ "__inputs": [ { "name": "DS_TEST-ENVIORMENT-K8S", "label": ...
- spring boot 四大组件之Auto Configuration
SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...
- Advanced Collection Views and Building Custom Layouts
Advanced Collection Views and Building Custom Layouts UICollectionView的结构回顾 首先回顾一下Collection View的构成 ...
- csharp: get Web.Services WebMethod
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Winform开发常用控件之Checkbox和CheckedListBox
Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...
- winform中的checkedListbox数据源绑定
首先看清楚一点 winform下该控件的名称叫做:checkedListbox webform下叫做CheckBoxList 不知道这样起名的用意何在,这个别管了,看看用法吧. web下很简单,直接设 ...
- Sitecore Digital Marketing System, Part 1: Creating personalized, custom content for site visitors(自定义SiteCore中的 Item的Personalize的Condition) -摘自网络
Sitecore’s Digital Marketing System (DMS) can help you personalize the content your site displays to ...
- CheckedListBox与CheckedListBox联动
包括保存和加载 //查找业务类型 DataTable dtyewu = sb.SelectSyscode(0, true); if (dtyewu.Rows.Count > 0) { flagc ...
随机推荐
- mxonline实战12, 课程评论,相关课程推荐,课程视频页
对应github地址:第12天 一. 课程评论 1. 创建URL, VIEW courses/views.py -> Course
- HTML基础总纲
我看了很多博客感觉如果自己写的话还不一定有人家写的好,在介于我没有时间从这么细小的知识总结,那么人家总结好的我们为什么不用,完了之后在就自己的感受和不足之处在做补充. 我们一个的讲:主要参考: 一,H ...
- day 14 自定义模块,常用模块 time .datetime ,time 模块
内容大纲 一:Import 模块 1,创建一个以tbjx命名的名称空间 2,执行此模块的代码,并将所有内容加载到内存 3,调用此模块的代码要通过tbjx.的方式 二:from 包 import 模块 ...
- LeetCode 795. Number of Subarrays with Bounded Maximum
问题链接 LeetCode 795 题目解析 给定一个数组A,左右范围L.R.求子数组的数量,要求:子数组最大值在L.R之间. 解题思路 子数组必须连续,利用最大值R对数组进行分段,设定变量 left ...
- HTML01--基础概述
HTML:Hyper Text Markup Language,超文本标记语言,不是编程语言,而是标记语言,使用一套标记标签来描述网页.通常来说,我们平时打开浏览器看到的网页由三部分组成,分别是HTM ...
- FCN详解
转载自:https://www.cnblogs.com/gujianhan/p/6030639.html 论文地址:https://arxiv.org/pdf/1411.4038v1.pdf 背景 C ...
- 【转载】Analysis Service Tabular Model #003 Multidimensional Model VS Tabular Model 我们该如何选择?
由于Multidimensional Model 和 Tabular Model 并不能互相转换, 所以在项目之初就应该要考虑好选择哪一种模型进行开发. 以下只是一些建议: Licensing 许可和 ...
- RHCE 共享文件系统
9.1 共享文件系统 概述: 共享文件系统通常有两种方式: 基于文件共享,一种直接共享文件夹给client端,常见的技术有NFS(Network File System )和 SMB (Server ...
- Array对象的判定
/* 关于JS对象类型的判断,最复杂的在于RegExp和Array了,判定RegExp的情形不较少,而Array就比较多了,下面就是判断Array的方法 */ //方法一:利用instanceof来判 ...
- PHPStorm操作小技巧
1.围绕选中字符输入引号或者括号 2.设置服务器部署 3.隐藏Project快捷键 Shift + Esc 4.IDE内窗口切换 Ctrl + TAB 5.关闭当前项目 File -> Clos ...