как предотвратить всплывающее окно contextmenustrip, если в списке не выбрана строка

У меня есть список, в котором есть режим просмотра деталей и есть контекстная панель для удаления элемента в выбранной строке. Моя проблема в том, что когда я щелкаю правой кнопкой мыши пустую строку, предполагается, что выбранный элемент является первым элементом в списке. есть ли способ, чтобы contextmenustrip отображался только в тех строках, которые имеют значение? это код для моего удаления в contextmenustrip

private void removeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult drty = MessageBox.Show("Remove student " +listView2.Items[listView2.FocusedItem.Index].SubItems[1].Text + " from class?","Remove Data",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
        if (drty == DialogResult.OK)
        {
            conek.nonQuery("delete from class_info where class_id = '"+Convert.ToInt32(textBox5.Text)+"' and stud_id = '"+Convert.ToInt32(listView2.Items[listView2.FocusedItem.Index].SubItems[0].Text)+"'");
            ListViewItem lrs = listView2.Items[listView2.FocusedItem.Index];
            listView2.Items.Remove(lrs);
        }
    }

person Deviruchi D Devourer    schedule 03.02.2014    source источник


Ответы (1)


Событие Opening из ContextMenuStrip, вероятно, то, что вы ищете:

Что-то вроде этого предотвратит его отображение вообще, пока у вас не будет выбранный элемент.

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) 
{
     e.Cancel = this.listView2.SelectedItems.Count <= 0;
}
person Derek W    schedule 03.02.2014