csharp:A Custom CheckedListBox with Datasource

简介:  from A Custom CheckedListBox with Datasource  http://www.codeproject.com/Articles/22960/A-Custom-CheckedListBox-with-Datasource-Implementa /// <summary> /// (eraghi) /// Cust


from A Custom CheckedListBox with Datasource  http://www.codeproject.com/Articles/22960/A-Custom-CheckedListBox-with-Datasource-Implementa

 /// <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() + ".");
            }
        }
    }



目录
相关文章
|
Java 数据库连接 mybatis
Consider defining a bean of type ‘com.example.democrud.democurd.usermapper.DaoMapper‘ in your config
Consider defining a bean of type ‘com.example.democrud.democurd.usermapper.DaoMapper‘ in your config
202 0
|
6月前
|
Java 数据库 Spring
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could
76 0
|
6月前
|
Java 数据库连接 Spring
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could
这个错误通常出现在使用Spring Boot进行数据库连接时。错误信息表明Spring Boot未能配置一个DataSource,因为没有指定'url'属性,并且没有发现默认的数据库连接。
307 0
|
5月前
|
监控 druid Java
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
92 0
|
Java 数据库
IDEA不能运行 Add Configuration/Press the + button to create a new Configuration which cannot be loaded
IDEA不能运行 Add Configuration/Press the + button to create a new Configuration which cannot be loaded
IDEA不能运行 Add Configuration/Press the + button to create a new Configuration which cannot be loaded
|
数据库
Failed to configure a DataSource: url attribute is not specified and no embedded datasource could...
Failed to configure a DataSource: url attribute is not specified and no embedded datasource could...
Failed to configure a DataSource: url attribute is not specified and no embedded datasource could...
No injector for custom defined data type的解决办法
No injector for custom defined data type的解决办法
248 0
No injector for custom defined data type的解决办法
|
XML 数据格式
SAP Fiori Elements - object detail batch roundtrip triggered by binding property in embedded xml vie
SAP Fiori Elements - object detail batch roundtrip triggered by binding property in embedded xml vie
106 0
SAP Fiori Elements - object detail batch roundtrip triggered by binding property in embedded xml vie
|
存储 SQL
CDS view注解解析 - @Environment.systemField
下面的CDS view使用到了@Environment.systemField这个注解,定义了两个参数#SYSTEM_LANGUAGE和#USER。
194 0
CDS view注解解析 - @Environment.systemField