private void удалитьСлойToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult res = MessageBox.Show("Будет удален текущий активный слой, действительно продолжить?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (res == DialogResult.Yes) { if (ActiveLayer == 0) { MessageBox.Show("Вы не можете удалить нулевой слой.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { LayersCount--; int LayerNomForDel = Слои.SelectedIndex; Слои.Items.RemoveAt(LayerNomForDel); Слои.SelectedIndex = 0; ActiveLayer = 0; Слои.SetItemCheckState(0, CheckState.Checked); ProgrammDrawingEngine.RemoveLayer(LayerNomForDel); } } }
private void LayersControl_SelectedValueChanged(object sender, EventArgs e) { if (Слои.SelectedIndex != ActiveLayer) { if (Слои.SelectedIndex != -1 && ActiveLayer < Слои.Items.Count) { Слои.SetItemCheckState(ActiveLayer, CheckState.Unchecked); ActiveLayer = Слои.SelectedIndex; Слои.SetItemCheckState(Слои.SelectedIndex, CheckState.Checked); ProgrammDrawingEngine.SetActiveLayerNom(ActiveLayer); } } }
// данная функция будет обрабатывать изменения значения элементов LayersControl private void LayersControl_SelectedValueChanged(object sender, EventArgs e) { // если отметили новый слой, необходимо снять галочку выделения со старого if (Слои.SelectedIndex != ActiveLayer) { // если выделенный индекс является корректным ( больше либо равен нулю и входит в диапазон элементов) if (Слои.SelectedIndex != -1 && ActiveLayer < Слои.Items.Count) { // снимаем галочку с предыдущего активного слоя Слои.SetItemCheckState(ActiveLayer, CheckState.Unchecked); // сохраняем новый индекс выделенного элемента ActiveLayer = Слои.SelectedIndex; // помечаем галочкой новый активный слой Слои.SetItemCheckState(Слои.SelectedIndex, CheckState.Checked); // посылаем сигнал движку программы, об изменении активного слоя ProgrammDrawingEngine.SetActiveLayerNom(ActiveLayer); } } }
// функция удаления слоя private void удалитьСлойToolStripMenuItem_Click(object sender, EventArgs e) { // запрашиваем подтверждение действия, с помощью MessageBox DialogResult res = MessageBox.Show("Будет удален текущий активный слой, действительно продолжить?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); // если пользователь нажал кнопку "ДА" в окне подтверждения if (res == DialogResult.Yes) { // если удаляемый слой - начальный if (ActiveLayer == 0) { // сообщаем о невозможности удаления MessageBox.Show("Вы не можете удалить нулевой слой.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else // иначе { // уменьшаем значение счетчика слоев LayersCount--; // сохраняем номер удаляемого слоя, т.к. SelectedIndex измениться полсе операций в LayersControl int LayerNomForDel = Слои.SelectedIndex; // удаляем запись в элементе LayerControl (с индексом LayersControl.SelectedIndex - текущим выделенным слоем) Слои.Items.RemoveAt(LayerNomForDel); // устанавливаем выделенный слоем - нулевой (главный слой) Слои.SelectedIndex = 0; // помечаем активный слой - нулевой ActiveLayer = 0; // помечаем галочкой нулевой слой Слои.SetItemCheckState(0, CheckState.Checked); // вызываем функцию удаления слоя в движке программы ProgrammDrawingEngine.RemoveLayer(LayerNomForDel); } } }