如果在列表视图中没有选择行,如何防止上下文元素弹出

Dev*_*rer 1 c# listview contextmenustrip winforms

我有一个listview,它具有详细信息的视图模式,并有一个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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Der*_*k W 6

您可能正在寻找的Opening事件ContextMenuStrip:

这样的东西会阻止它显示,直到你有一个选定的项目.

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) 
{
     e.Cancel = this.listView2.SelectedItems.Count <= 0;
}
Run Code Online (Sandbox Code Playgroud)