CheckedList — помечаемый список

Помечаемый список позволяет пользователю выбрать несколько элементов, включив флажки, расположенные рядом с элементом.
Помечаемый список позволяет выбрать, добавить или удалить элементы из списка.
 
 

добавление данных

Добавить данные можно с помощью диалогового окна или конструктора формы.
Выберите свойство Items и нажмите на кнопку или раскройте треугольник в элементе и нажмите на Edit Items, появится диалоговое окно, где можно добавить данные.
После того, как пользователь выберет данные и нажмет на кнопку ОК, выбранные данные отобразятся в элементах RichTextBox, TextBox и ListBox.
Скрыть

Показать

Копировать
  Form1.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using System.Windows.Forms;
  •  
  • namespace _0029 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •    //добавляем данные
  •    checkedListBox1.Items.Add("yellow");
  •    checkedListBox1.Items.Add("black");
  •    checkedListBox1.Items.Add("white");
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    foreach(string i in checkedListBox1.CheckedItems) {
  •     richTextBox1.Text += i + "\n";
  •     textBox1.Text += i + "\r\n";
  •     listBox1.Items.Add(i);
  •    }
  •   }
  •  }
  • }
 
 

добавление и удаление данных программно

Скрыть

Показать

Копировать
  Form1.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using System.Windows.Forms;
  •  
  • namespace _0030 {
  •  public partial class Form1 : Form {
  •   //промежуточное свойство, которому будут передаваться данные из дочерней формы
  •   public CheckedListBox Between {
  •    set {
  •     checkedListBox1.Items.Add(value);
  •    }
  •    get {
  •     return checkedListBox1;
  •    }
  •   }
  •   public Form1() {
  •    InitializeComponent();
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    //открываем дочернюю форму и передаем ей ссылку
  •    new Form2().ShowDialog(this);
  •   }
  •   private void button2_Click(object sender, EventArgs e) {
  •    //удаляем выбранные данные
  •    //удаление нужно проиводить с конца списка
  •    for(int i = checkedListBox1.Items.Count - 1; i >= 0; i--) {
  •     if(checkedListBox1.GetItemChecked(i))
  •      checkedListBox1.Items.RemoveAt(i);
  •    }
  •   }
  •   private void button3_Click(object sender, EventArgs e) {
  •    //удаляем все данные
  •    checkedListBox1.Items.Clear();
  •   }
  •  }
  • }
Скрыть

Показать

Копировать
  Form2.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using System.Windows.Forms;
  •  
  • namespace _0030 {
  •  public partial class Form2 : Form {
  •   public Form2() {
  •    InitializeComponent();
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    /*создаем переменную родительской формы (Form1)и присваиваем
  •     ей значение через ссылку на родительскую форму*/
  •    Form1 F1 = (Form1)this.Owner;
  •    //присваиваем значение свойству в родительской форме
  •    //F1.Between.Text = textBox1.Text;
  •    F1.Between.Items.Add(textBox1.Text);
  •    //очищаем поле ввода
  •    textBox1.Clear();
  •    //передаем фокус
  •    textBox1.Select();
  •   }
  •   private void button2_Click(object sender, EventArgs e) {
  •    //закрываем форму
  •    this.Close();
  •   }
  •   private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
  •    if(e.KeyChar == (char)Keys.Enter) {
  •     //после нажатия клавиши Enter активируем кнопку OK
  •     button1.Select();
  •     //перехватываем нажатие клавиши, удаляем системный звук
  •     e.Handled = true;
  •    }
  •   }
  •  }
  • }
 
 

выбор всех данных программно

Скрыть

Показать

Копировать
  Form1.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using System.Windows.Forms;
  •  
  • namespace _0031 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •   }
  •   //кнопка Добавить
  •   private void button1_Click(object sender, EventArgs e) {
  •    checkedListBox1.Items.Add(textBox1.Text);
  •    //очищаем поле ввода
  •    textBox1.Clear();
  •    //после нажатия кнопки Добавить активируем текстовое поле для ввода данных
  •    textBox1.Select();
  •   }
  •   //текстовое поле для ввода данных 
  •   private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
  •    if(e.KeyChar == (char)Keys.Enter) {
  •     //после нажатия клавиши Enter активируем кнопку OK
  •     button1.Select();
  •     //перехватываем нажатие клавиши, удаляем системный звук
  •     e.Handled = true;
  •    }
  •   }
  •   //кнопка Удалить
  •   private void button2_Click(object sender, EventArgs e) {
  •    //удаляем выбранные данные
  •    //удаление нужно производить с конца списка
  •    for(int i = checkedListBox1.Items.Count - 1; i >= 0; i--) {
  •     if(checkedListBox1.GetItemChecked(i))
  •      checkedListBox1.Items.RemoveAt(i);
  •    }
  •   }
  •   //кнопка Удалить все
  •   private void button3_Click(object sender, EventArgs e) {
  •    checkedListBox1.Items.Clear();
  •   }
  •   //кнопка Выбрать все
  •   private void button4_Click(object sender, EventArgs e) {
  •    for(int i = checkedListBox1.Items.Count - 1; i >= 0; i--) {
  •     checkedListBox1.SetItemChecked(i, true);
  •    }
  •   }
  •   //кнопка Сбросить все
  •   private void button5_Click(object sender, EventArgs e) {
  •    for(int i = checkedListBox1.Items.Count - 1; i >= 0; i--) {
  •     checkedListBox1.SetItemChecked(i, false);
  •    }
  •   }
  •   //кнопка OK
  •   private void button6_Click(object sender, EventArgs e) {
  •    //заполняем выбранными данными текстовые поля и список
  •    foreach(string i in checkedListBox1.CheckedItems) {
  •     richTextBox1.Text += i + "\n";
  •     textBox2.Text += i + "\r\n";
  •     listBox1.Items.Add(i);
  •    }
  •   }
  •   //кнопка Clear
  •   private void button7_Click(object sender, EventArgs e) {
  •    //удаляем все данные из текстовых полей и списка
  •    richTextBox1.Clear();
  •    textBox2.Clear();
  •    listBox1.Items.Clear();
  •   }
  •  }
  • }
 
 

сортировка

Если задать свойству Sorted значение true, данные будут отсортированы, а вот после того, как данные будут отсортированы, задать свойству Sorted значение false, то данные первоначальный несортированный вид, ПОЧЕМУ-ТО не принимают.
Скрыть

Показать

Копировать
  Form1.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using System.Windows.Forms;
  •  
  • namespace _0032 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •   }
  •   //текстовое поле для ввода данных
  •   private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
  •    if(e.KeyChar == (char)Keys.Enter) {
  •     //после нажатия клавиши Enter активируем кнопку OK
  •     button1.Select();
  •     //перехватываем нажатие клавиши, удаляем системный звук
  •     e.Handled = true;
  •    }
  •   }
  •   //кнопка Добавить
  •   private void button1_Click(object sender, EventArgs e) {
  •    checkedListBox1.Items.Add(textBox1.Text);
  •    //очищаем поле ввода
  •    textBox1.Clear();
  •    //после нажатия кнопки Добавить активируем текстовое поле для ввода данных
  •    textBox1.Select();
  •   }
  •   //кнопка Удалить
  •   private void button2_Click(object sender, EventArgs e) {
  •    //удаляем выбранные данные
  •    //удаление нужно производить с конца списка
  •    for(int i = checkedListBox1.Items.Count - 1; i >= 0; i--) {
  •     if(checkedListBox1.GetItemChecked(i))
  •      checkedListBox1.Items.RemoveAt(i);
  •    }
  •   }
  •   //кнопка Удалить все
  •   private void button3_Click(object sender, EventArgs e) {
  •    checkedListBox1.Items.Clear();
  •   }
  •   //кнопка OK
  •   private void button4_Click(object sender, EventArgs e) {
  •    //заполняем выбранными данными текстовое поле
  •    foreach(string i in checkedListBox1.CheckedItems) {
  •     textBox2.Text += i + "\r\n";
  •    }
  •   }
  •   //кнопка Clear
  •   private void button5_Click(object sender, EventArgs e) {
  •    //удаляем все данные из текстового поля
  •    textBox2.Clear();
  •   }
  •   //флажок
  •   private void checkBox1_CheckedChanged(object sender, EventArgs e) {
  •    checkedListBox1.Sorted = true;
  •   }
  •  }
  • }
 
 

заполняем элемент данными с разных источников данных

В данном примере, наш элемент будет заполнен данными из: коллекции, текстового документа, XML файла, базы данных.
Скрыть

Показать

Копировать
  Form1.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using System.Windows.Forms;
  •  
  • //подключить пространство имен
  • using System.IO;
  • //подключить пространство имен для кодировки
  • using System.Text;
  • //подключить пространство имен
  • using System.Xml;
  • //подключить пространство имен
  • using System.Data.SqlClient;
  •  
  • namespace _0033 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •   }
  •   //заполняем данными из коллекции
  •   private void button1_Click(object sender, EventArgs e) {
  •    List<string> Array = new List<string> {
  •     "red",
  •     "green",
  •     "blue"
  •    };
  •    foreach(string i in Array) {
  •     checkedListBox1.Items.Add(i);
  •    }
  •   }
  •   //заполняем данными из текстового файла
  •   private void button2_Click(object sender, EventArgs e) {
  •    //путь
  •    string path = @"TextFile1.txt";
  •    //если файл существует
  •    if(File.Exists(path)) {
  •     //создаем байтовый поток и привязываем его к файлу
  •     //в конструкторе указываем: путь кодировка
  •     using(StreamReader sr = new StreamReader(path, Encoding.UTF8)) {
  •      while(!sr.EndOfStream) {
  •       checkedListBox2.Items.Add(sr.ReadLine());
  •      }
  •     }
  •    }
  •    else {
  •     MessageBox.Show("Такой файл не существует!");
  •    }
  •   }
  •   //заполняем данными из XML файла
  •   private void button3_Click(object sender, EventArgs e) {
  •    //путь
  •    string path = @"XMLFile1.xml";
  •    //если файл существует
  •    if(File.Exists(path)) {
  •     XmlDocument XmlDoc = new XmlDocument();
  •     //загружаем XML документ
  •     XmlDoc.Load(path);
  •     //получаем все дочерние элементы корневого элемента
  •     //xmlDoc.DocumentElement - корневой элемент
  •     foreach(XmlNode i in XmlDoc.DocumentElement.ChildNodes) {
  •      foreach(XmlNode j in i.ChildNodes) {
  •       checkedListBox3.Items.Add(j.InnerText);
  •      }
  •     }
  •    }
  •    else {
  •     MessageBox.Show("Такой файл не существует!");
  •    }
  •   }
  •   //заполняем данными из базы данных
  •   private void button4_Click(object sender, EventArgs e) {
  •    //строка подключения к источнику данных
  •    string connectSting = @"Data Source=.\MSSQLSERVER2012;Initial Catalog=star;Integrated Security=True";
  •    //sql запрос
  •    string sql = "select Color from Colors";
  •    //создаем подключение
  •    using(SqlConnection myConnection = new SqlConnection(connectSting)) {
  •     //применяем запрос к источнику данных
  •     SqlCommand myCommand = new SqlCommand(sql, myConnection);
  •     try {
  •      //открываем соединение
  •      myConnection.Open();
  •      //создаем объект для извлечения данных
  •      SqlDataReader myReader = myCommand.ExecuteReader();
  •      //извлекаем данные
  •      while(myReader.Read()) {
  •       checkedListBox4.Items.Add(myReader[0]);
  •      }
  •     }
  •     catch(Exception ex) {
  •      MessageBox.Show(" Соединение не установлено!");
  •     }
  •    }
  •   }
  •  }
  • }