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 ...
随机推荐
- web测试需要注意几个非常重要的测试点
web测试需要注意几个非常重要的测试点 微软语言标准: 全角字符和半角字符都要使用一个空格分开 英文和数字直接要有空页面分辨率: 通常是计算机的默认分辨率,但是还是会有一些老式电脑存在1024*7 ...
- ubuntu 16.04安装后的简单优化
1.更换更新源为国内源: sudo vim /etc/apt/sources.list vim 打开更新源配置文件添加国内源进去,这里添加阿里源 deb http://mirrors.aliyun.c ...
- Zynq-7000 FreeRTOS(二)中断:Timer中断
总结Zynq-7000 这款器件中的Timer定时器中断,为FreeRTOS中断做准备.在 ZYNQ 的纯 PS 里实现私有定时器中断. 每隔一秒中断一次, 在中断函数里计数加 1, 通过串口打印输出 ...
- Vue 混入(mixins)
详细参考官方文档 基础 混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项. ...
- redis之 集群配置(主从复制)
集群的作用: 集群的方式有二种: 第二种的好处是:master宕机以后可以直接切换到slave1 主从通信的过程 先通过dump导出大块的rdb 然后把aof缓冲过来,然后通过replicationf ...
- ACCESS 手工注入
ACCESS的注入,基本是死的.思路很简单,基本都可以工具解决.上代码: 1.判断有无注入点' and 1=1 and 1=22.猜表一般的表的名称无非是admin adminuser user pa ...
- Linux常用命令之sed(2)
Sed SED的英文全称是 Stream EDitor,它是一个简单而强大的文本解析转换工具,在1973-1974年期间由贝尔实验室的Lee E. McMahon开发,今天,它已经运行在所有的主流操作 ...
- Group by、having、order by、Distinct 使用注意事项
直奔主题,如下SQL语句 SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY REQUEST,METHOD HAVING ...
- [PY3]——内置数据结构(1)——列表及其常用操作
列表及其常用操作_xmind图 about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...
- oracle:ORA-00911: 无效字符 问题和解决---Eclipse中的SQL语句不能加分号
eclipse中原sql: 异常: 原因:Eclipse中的SQL语句不能加分号 去掉分号,正常执行,插入成功. 这里把id设为了主键,具有唯一性,重复插入同一id执行插入失败,ORA-00001号错 ...