Winforms: Как связать элемент Checkbox CheckedListBox с привязкой данных - PullRequest
16 голосов
/ 20 сентября 2011

У меня есть проверенный список с привязкой к данным в одной форме, и я хотел бы знать, возможно ли вообще привязать блок данных к каждому элементу списка с определенным свойством объекта.

Спасибо за любую помощь заранее:)

Редактировать: Возможно, мой вопрос был неверно истолкован.

Я хотел бы знать, возможно ли установить привязку к данным для каждого элемента CheckedListBox. Я знаю, как привязать данные к источнику и как программно изменять записи, просматривая темы. То, что я не знаю, возможно ли иметь класс который реализует INotifyPropertyChanged, так что когда свойство «CheckedState» меняет, CheckedListBox обновляется сам.

Ответы [ 3 ]

32 голосов
/ 20 сентября 2011

Согласно ответу Самича, Вот полный пример, источник привязки Object

private void Form1_Load(object sender, EventArgs e)
        {
            List<randomClass> lst = new List<randomClass>();

            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());

            ((ListBox)this.checkedListBox1).DataSource = lst;
            ((ListBox)this.checkedListBox1).DisplayMember = "Name";
            ((ListBox)this.checkedListBox1).ValueMember = "IsChecked";


            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                randomClass obj = (randomClass)checkedListBox1.Items[i];
                checkedListBox1.SetItemChecked(i, obj.IsChecked);
            }
        }
    }

    public class randomClass
    {
        public bool IsChecked { get; set; }
        public string Name { get; set; }
        public randomClass()
        {
            this.IsChecked = true;
            Name = "name1";
        }
    }

randomClass предназначен для демонстрационных целей

7 голосов
/ 20 сентября 2011

Вы можете найти ответ здесь: Использование источника данных с CheckBoxList

var checkBoxList = (ListBox)MyCheckBoxList;
checkBoxList.DataSource = dataSource;
checkBoxList.DisplayMember = "name";
checkBoxList.ValueMember = "enabled";

Убедитесь, что ValueMember имеет тип bool.

4 голосов
/ 31 августа 2013

Я только что получил, как привязать таблицу в SQL к списку флажков без стресса. Я более чем рад поделиться этим. Я добавил их вручную ...

        SqlConnection conn = new SqlConnection();
        SqlCommand cmd = new SqlCommand();
        conn.ConnectionString = "Data Source=MICMIKE\\SQLEXPRESS;Initial Catalog=Enterprise;Integrated Security=True";
        conn.Open();
        string query = "Select Position from Position";// position column from position table
        cmd.Connection = conn;
        cmd.CommandText = query;

        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            string myItem = dr["Position"].ToString();
            checkedListBox1.Items.Add(myItem, true);//true means check the items. use false if you don't want to check the items or simply .....Items.Add(myItem);
        }

Чтобы получить доступ к пунктам, отмеченным в контрольном списке, используйте

        foreach(object item in Checkedlistbox1.CheckedItems)
        {
             string itemchecked = item.ToString();
             MessageBox.Show(itemchecked);// This will show all the checked items in the checklistbox.
        }

Это действительно работает. Я только что получил это сейчас. Надеюсь тебе понравится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...