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 ...
随机推荐
- 利用python 学习数据分析 (学习一)
内容学习自: Python for Data Analysis, 2nd Edition 就是这本 纯英文学的很累,对不对取决于百度翻译了 前情提要: 各种方法贴: https://w ...
- python 之 爬普房网
from bs4 import BeautifulSoupimport reimport requestsimport pandas## pa pufangwangclass down(object) ...
- ConcurrentHashMap相关知识点
ConcurrentHashMap涉及的知识点:HashMap,HashTable,UnSafe,CAS,数组+链表,Segment,ReentrantLock(非公平锁,公平锁),红黑树. 为什么要 ...
- linux系统服务管理
centos7的服务管理命令 systemctl start 服务名称 systemctl stop 服务名称 systemctl status 服务名称 systemctl restart 服务名称 ...
- 【Alpha】Phylab 发布说明
Phylab Alpha阶段发布说明 一.发布地址 Phylab 二.新功能 1. 控制台 由于往届项目控制台并未发布,因此我们在完善后将这部分放在新功能部分.目前使用控制台需要向开发者申请. 1.1 ...
- Python使用浏览器模拟访问页面之使用ip代理
最近需要使用浏览器模拟访问页面,同时需要使用不同的ip访问,这个时候就考虑到在使用浏览器的同时加上ip代理. 本篇工作环境为win10,python3.6. Chorme 使用Chrome浏览器模拟访 ...
- 关于MatlabGUI清除WorkSpace的用法
近日在调试Matlba GUI程序时,因为不想退出程序后手动Clear All来清理,又需要在过程中对WorkSpace进行清理,否则会引用之前的结果导致错误,找了很多资料,国内的论坛什么的都说用Cl ...
- 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 ...
- utf8 和 UTF-8 在使用中的区别
在使用中常常遇到utf-8和utf8,现在终于弄明白他们的使用不同之处了,现在来和大家分享一下,下面我们看一下utf8 和 UTF-8 有什么区别 “UTF-8”是标准写法,php在Windows下边 ...
- 使用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 ...