c# - 如果在 ListView 中没有选择行,如何防止上下文菜单弹出

标签 c# winforms listview contextmenustrip

我有一个 ListView ,它具有详细信息的 View 模式和一个用于删除所选行中的项目的上下文菜单条。我的问题是,每当我右键单击空行时,它都会假定所选项目是列表中的第一项。 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);
        }
    }

最佳答案

ContextMenuStripOpening 事件可能就是您要查找的内容:

在您选择项目之前,类似这样的内容将完全阻止它显示。

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

关于c# - 如果在 ListView 中没有选择行,如何防止上下文菜单弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529350/

相关文章:

c# - 如何获取 JSON 格式的服务器响应?

c# - 如何在 C# 中覆盖转储文件中的特定字节

c# - JSON.net - 使用路径字符串写入 JSON/JObject

listview - 使用 API 和 AsyncStorage 数据构建 ListView

java - 如何在 ListView 中使用 Android DataBinding 并仍然使用 ViewHolder 模式?

c# - 在 C# 中给定周数和年份计算一周的开始和结束日期(基于 ISO 规范)

c# - 我想在 PictureBox C# 上画正方形

c# - 如何使用 C# 代码打印文档?

c# - 从 C# 代码中删除 dataGridView1_CellContentClick() 会导致构建失败 - 为什么?

listview - 如何更改 Jenkins 中的 View 顺序