本帖最后由 mpy2003 于 2013-11-04 13:00:02 编辑

解决方案 »

  1.   

    private ListViewItem GetItemFromPoint(ListView listView, Point mousePosition)
    {
        // translate the mouse position from screen coordinates to 
        // client coordinates within the given ListView
        Point localPoint = listView.PointToClient(mousePosition);
        return listView.GetItemAt(localPoint.X, localPoint.Y);
    }判断GetItemFromPoint!=null
      
    *****************************************************************************
    签名档: http://feiyun0112.cnblogs.com/
      

  2.   

    是这样吗?if (Program.Usergroup == "工程部" && e.Button == MouseButtons.Right && GetItemFromPoint != null)提示错误:
    运算符"!="无法应用于“方法组”和“<null>”类型的操作数
      

  3.   

    问题解决了:
            private void Form_Load(object sender, EventArgs e)
            {
                ContextMenuStrip cms = new ContextMenuStrip();
                cms.Name = "cms";
                cms.Items.Add("查看原始目录", null);
                cms.Items.Add("修改非标信息", null);
                this.ContextMenuStrip = cms;
                cms.Opening +=new CancelEventHandler(cms_Opening);
            }
            private void cms_Opening(object sender,CancelEventArgs e)
            {
                if (this.listView.SelectedItems.Count == 0) { e.Cancel = true; }
                if (Program.Usergroup != "工程部") { e.Cancel = true; }
            }不需要listView_MouseClick
      

  4.   

    触发事件  前面先判断是否选中项  没选就return
      

  5.   


    if (listview.SelectedIndices != null && listview.SelectedIndices.Count>0)
      

  6.   

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
            {
                if (!e.IsSelected)
                {
                    ...
                  }
    }
      

  7.   

    这个事件是不是就是那个Opening?
    貌似不行,可能是多了前面一句listview.SelectedIndices != null
    几位大大,
    1.我提供的解决办法是不是有什么不妥的地方?
    2.在ListView选中的情况下,在Listview控件以外的窗体空白处右键也是会有菜单,可以避免吗?是不是还得判断鼠标位置是不是在ListView控件内?代码怎么写?
    3.菜单添加项时为ToolStripItemCollection.Add(string text,Image image,EventHandler onClick),能说明一下这三项是怎么添加吗?目前只知道第一项是指菜单显示的文本与第三项是指定发生的事件,第二项图标实在不知道是要怎么添加,请指导一下,谢谢。
      

  8.   

                ContextMenuStrip cms = new ContextMenuStrip();
                cms.Name = "cms";
                cms.ImageList = this.toolIcon;
                ToolStripMenuItem mt1 = new ToolStripMenuItem("测试看看");
                mt1.ImageKey = "Search";
                cms.Items.Add(mt1);
                cms.Items.Add("-");现在知道怎么加图标了