private void multiSetterToolStripMenuItem_Click(object sender, EventArgs e) { // shows a dialog to set multiple settings to all selected creatures if (listViewLibrary.SelectedIndices.Count > 0) { Creature c = new Creature(); List<bool> appliedSettings = new List<bool>(); for (int i = 0; i < 13; i++) appliedSettings.Add(false); List<Creature> selectedCreatures = new List<Creature>(); // check if multiple species are selected bool multipleSpecies = false; string sp = ((Creature)listViewLibrary.SelectedItems[0].Tag).species; c.species = sp; foreach (ListViewItem i in listViewLibrary.SelectedItems) { selectedCreatures.Add((Creature)i.Tag); if (((Creature)i.Tag).species != sp) { multipleSpecies = true; } } List<Creature>[] parents = null; if (!multipleSpecies) parents = findParents(c); MultiSetter ms = new MultiSetter(c, appliedSettings, parents); if (ms.ShowDialog() == DialogResult.OK) { foreach (Creature sc in selectedCreatures) { if (appliedSettings[0]) sc.owner = c.owner; if (appliedSettings[1]) sc.status = c.status; if (appliedSettings[2]) sc.gender = c.gender; if (appliedSettings[3]) sc.isBred = c.isBred; if (appliedSettings[4]) sc.motherGuid = c.motherGuid; if (appliedSettings[5]) sc.fatherGuid = c.fatherGuid; if (appliedSettings[6]) sc.note = c.note; if (appliedSettings[7]) sc.colors[0] = c.colors[0]; if (appliedSettings[8]) sc.colors[1] = c.colors[1]; if (appliedSettings[9]) sc.colors[2] = c.colors[2]; if (appliedSettings[10]) sc.colors[3] = c.colors[3]; if (appliedSettings[11]) sc.colors[4] = c.colors[4]; if (appliedSettings[12]) sc.colors[5] = c.colors[5]; } if (appliedSettings[4] || appliedSettings[5]) updateParents(selectedCreatures); createOwnerList(); setCollectionChanged(true, (!multipleSpecies ? sp : null)); filterLib(); } ms.Dispose(); } }