пятница, 1 июля 2016 г.

Работа с элементом CheckedListBox

Составить программу, в которой реализовать оконное приложение, содержащее элемент CheckedListBox и две кнопки. Активация первой должна приводить к генерации списка целых чисел в CheckedListBox. Активация второй должна производить подсчет суммы всех отмеченных галочками элементов списка. Сумму выводить в отдельную форму (в немодальное диалоговое окно).



Метод генерации массива целых чисел для добавления их в список реализовать в отдельном классе методов. 

Как добавить в проект еще одну форму:
Solution_Explorer -> (правая кнопка) Имя_Проекта -> Add ->Windows Form -> (Name)Имя_формы.cs -> Add

Настройки свойств элементов:

CheckedListBox.checkedOnClick=true

Результат проектирования формы 1:

namespace WinProg_3_3 {
public partial class Form1 : Form {
public Form2 newForm;   // Cсылка на экземпляр формы 2
public Form1() {
    InitializeComponent( );
    }
private void button1_Click(object sender, EventArgs e) {
            checkedListBox1.Items.Clear();
checkedListBox1.Items.AddRange(Methods.arrayGenerate(10));
}
private void button2_Click(object sender, EventArgs e) {
    int sum = 0; // Summ of checked items
// Using foreach to review collection
foreach (object itemChecked in checkedListBox1.CheckedItems)
    sum += int.Parse(itemChecked.ToString());  
    newForm = new Form2(sum);   // Создать экземпляр формы 2
   //newForm.Show();             // Показать форму
    newForm.ShowDialog();   // Показать форму в модальном режиме
}
}
}

Результат проектирования формы 2:
namespace WinProg_3_3 {
    public partial class Form2 : Form {
        public Form2(int res) { // новый конструктор
            InitializeComponent( );
            label1.Text += res.ToString();
        }
    }
}
Объявление класса методов:
namespace WinProg_3_3 {
class Methods {
// This method returns an integer array with values between 0 and 1000
public static string[] arrayGenerate(int arrayLength) {
    Random rnd = new Random();
    string[] arr = new string[arrayLength]; // array
    for (int i = 0; i < arrayLength; arr[i] =
        rnd.Next(0, 1000).ToString(), i++) ;
    return arr;
}
}
}

Список использованных свойств и методов: CheckedListBox, Items, CheckedItems,
Sorted, CheckedItems, CheckedItems.Count