//d) Событие на выбор другой ячейки .................................. public partial class Form1 : Form { int OldRow, OldCol, Col, Row; // выбранные строка и столбец public Form1() { .................... listView1.Items[0].SubItems.Add("55"); listView1.Items[1].SubItems.Add("66"); OldRow = -1; OldCol = -1; Для выбора элемента из первого столбца событие SelectedIndexChanged private void listView1_SelectedIndexChanged(object sender, EventArgs e) { int k; if (listView1.SelectedItems.Count > 0) { k = listView1.FocusedItem.Index; if (OldRow >= 0 && OldCol > 0) // если предыдущий выбор не первый столбец { listView1.Items[OldRow].SubItems[OldCol].BackColor // закрасить обратно = Color.FromArgb(255, 255, 255); listView1.Items[OldRow].SubItems[OldCol].ForeColor = Color.FromArgb(0, 0, 0); } OldRow = Row; OldCol = Col; Row = k; Col = 0; } } Для выбора элемента не из первого столбца событие MouseUp private void listView1_MouseUp(object sender, MouseEventArgs e) { // по координатам мыши определяет строку и столбец ListViewHitTestInfo ht = listView1.HitTest(e.X,e.Y); Row=ht.Item.Index; Col=ht.Item.SubItems.IndexOf(ht.SubItem); listView1.Items[Row].UseItemStyleForSubItems = false; // отменить стиль SubItems if(Col>0) { listView1.Items[Row].SubItems[Col].BackColor =Color.FromArgb(0,150,255); // установка цвета выбранной клетки вручную listView1.Items[Row].SubItems[Col].ForeColor =Color.FromArgb(255,255,255); } if(OldRow>=0 && OldCol>0) { listView1.Items[OldRow].SubItems[OldCol].BackColor =Color.FromArgb(255,255,255); // восстановление цветов listView1.Items[OldRow].SubItems[OldCol].ForeColor =Color.FromArgb(0,0,0); } OldRow=Row; OldCol=Col; } } }