private void Add_Data_Btn_Click(object sender, EventArgs e) { if (DataList.Columns.Count <= 1) { return; } //get index int index; if (DataList.SelectedIndices.Count == 0) { index = DataList.Items.Count + 1; } else { index = DataList.SelectedIndices[0] + 1; } //get item var item = new ListViewItem(index.ToString()); var comboBoxes = Dataset_splitContainer.Panel2.Controls.OfType <ComboBox>().OrderBy(c => c.Location.X); foreach (var combo in comboBoxes) { if (combo.Equals(comboBoxes.ElementAt(0)) && combo.SelectedItem.ToString().Equals("[Silence]")) { MessageBox.Show("Choosing silence as speech will cause never-ending-playback, you have to stop the playback manually.", "WARNING", MessageBoxButtons.OK, MessageBoxIcon.Warning); } item.SubItems.Add(new ListViewItem.ListViewSubItem(item, combo.SelectedItem.ToString())); } //add var arr = new ListViewItem[DataList.Items.Count]; DataList.Items.CopyTo(arr, 0); DataList.Items.Clear(); var arrList = arr.ToList(); arrList.Insert(index - 1, item); DataList.Items.AddRange(arrList.ToArray()); //update # foreach (ListViewItem listViewItem in DataList.Items) { listViewItem.SubItems[0].Text = (listViewItem.Index + 1).ToString(); } //select the new item foreach (ListViewItem listViewItem in DataList.SelectedItems) { listViewItem.Selected = false; } DataList.Items[index - 1].Selected = true; DataList.Select(); DataList.EnsureVisible(index - 1); }