/// <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的更多相关文章

  1. CheckedListBox与下拉框联动代码

    private void yewubind(string id) { //给业务类型下拉框绑定业务类型数据 DataTable dtyewu = sb.SelectLast(id, 0); bool ...

  2. K8s仪表盘

    { "__inputs": [ { "name": "DS_TEST-ENVIORMENT-K8S", "label": ...

  3. spring boot 四大组件之Auto Configuration

    SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...

  4. Advanced Collection Views and Building Custom Layouts

    Advanced Collection Views and Building Custom Layouts UICollectionView的结构回顾 首先回顾一下Collection View的构成 ...

  5. csharp: get Web.Services WebMethod

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. Winform开发常用控件之Checkbox和CheckedListBox

    Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...

  7. winform中的checkedListbox数据源绑定

    首先看清楚一点 winform下该控件的名称叫做:checkedListbox webform下叫做CheckBoxList 不知道这样起名的用意何在,这个别管了,看看用法吧. web下很简单,直接设 ...

  8. 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 ...

  9. CheckedListBox与CheckedListBox联动

    包括保存和加载 //查找业务类型 DataTable dtyewu = sb.SelectSyscode(0, true); if (dtyewu.Rows.Count > 0) { flagc ...

随机推荐

  1. 利用python 学习数据分析 (学习一)

    内容学习自: Python for Data Analysis, 2nd Edition         就是这本 纯英文学的很累,对不对取决于百度翻译了 前情提要: 各种方法贴: https://w ...

  2. python 之 爬普房网

    from bs4 import BeautifulSoupimport reimport requestsimport pandas## pa pufangwangclass down(object) ...

  3. ConcurrentHashMap相关知识点

    ConcurrentHashMap涉及的知识点:HashMap,HashTable,UnSafe,CAS,数组+链表,Segment,ReentrantLock(非公平锁,公平锁),红黑树. 为什么要 ...

  4. linux系统服务管理

    centos7的服务管理命令 systemctl start 服务名称 systemctl stop 服务名称 systemctl status 服务名称 systemctl restart 服务名称 ...

  5. 【Alpha】Phylab 发布说明

    Phylab Alpha阶段发布说明 一.发布地址 Phylab 二.新功能 1. 控制台 由于往届项目控制台并未发布,因此我们在完善后将这部分放在新功能部分.目前使用控制台需要向开发者申请. 1.1 ...

  6. Python使用浏览器模拟访问页面之使用ip代理

    最近需要使用浏览器模拟访问页面,同时需要使用不同的ip访问,这个时候就考虑到在使用浏览器的同时加上ip代理. 本篇工作环境为win10,python3.6. Chorme 使用Chrome浏览器模拟访 ...

  7. 关于MatlabGUI清除WorkSpace的用法

    近日在调试Matlba GUI程序时,因为不想退出程序后手动Clear All来清理,又需要在过程中对WorkSpace进行清理,否则会引用之前的结果导致错误,找了很多资料,国内的论坛什么的都说用Cl ...

  8. mono for android生成APK出现错误fatal error in gc 解决方案

    laxknight 标签: mono for android,fatal error in gc mono for android生成APK出现这个错误fatal error in gc collec ...

  9. utf8 和 UTF-8 在使用中的区别

    在使用中常常遇到utf-8和utf8,现在终于弄明白他们的使用不同之处了,现在来和大家分享一下,下面我们看一下utf8 和 UTF-8 有什么区别 “UTF-8”是标准写法,php在Windows下边 ...

  10. 使用wireshark出现Couldn't run /usr/bin/dumpcap in child process: Permission denied解决办法

    sudo apt-get install libcap2-bin wireshark sudo chgrp myusername /usr/bin/dumpcap # myusername是你使用wi ...