private void RemoveButton_Click(object sender, EventArgs e) { if (TrainingDataViewer.SelectedIndex == 0) // location tab is showing { foreach (ListViewItem removeItem in LocationView.SelectedItems) { int imageIndex = removeItem.ImageIndex; ImageTemplate template = (ImageTemplate)removeItem.Tag; Localization.Instance.RemoveTrainingExample(template); Logging.LogOtherEvent("Removed location example: " + (string)template["path"]); LocationView.LargeImageList.Images.RemoveAt(imageIndex); foreach (ListViewItem updateItem in LocationView.Items) { if (updateItem.ImageIndex > imageIndex) { updateItem.ImageIndex--; } } if (removeItem.Group.Items.Count == 0) { LocationView.Groups.Remove(removeItem.Group); } LocationView.Items.Remove(removeItem); } training = true; Localization.Instance.Train(); UpdateLocationCount(); training = false; OnTrainingDataUpdated(); } else // gesture tab is showing { foreach (ListViewItem removeItem in GestureView.SelectedItems) { int imageIndex = removeItem.ImageIndex; Gesture template = (Gesture)removeItem.Tag; Logging.LogOtherEvent("Removed gesture example: " + template.Path); GestureRecognition.RemoveTrainingExample(template); GestureView.LargeImageList.Images.RemoveAt(imageIndex); foreach (ListViewItem updateItem in GestureView.Items) { if (updateItem.ImageIndex > imageIndex) { updateItem.ImageIndex--; } } if (removeItem.Group.Items.Count == 0) { GestureView.Groups.Remove(removeItem.Group); } GestureView.Items.Remove(removeItem); } training = true; GestureRecognition.Train(); UpdateGestureCount(); training = false; OnTrainingDataUpdated(); } }