首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

如何在ListView里添加不同的右键菜单

2013-12-06 
怎么在ListView里添加不同的右键菜单添加单个的菜单我知道怎么添加,但是针对ListView不同的组添加不同的多

怎么在ListView里添加不同的右键菜单
添加单个的菜单我知道怎么添加,但是针对ListView不同的组添加不同的多个右键菜单就难到了。首先说明一下是动态添加,不是拖入控件的方式

       ContextMenuStrip cmsA = new ContextMenuStrip();
       cmsA.ImageList = this.toolIcon;
       /* 添加A菜单*/
       this.ContextMenuStrip = cmsA;
       cmsA.Opening += new CancelEventHandler(cmsA_Opening);

       ContextMenuStrip cmsB = new ContextMenuStrip();
       cmsA.ImageList = this.toolIcon;
       /* 添加B菜单*/
       this.ContextMenuStrip = cmsB;
       cmsB.Opening += new CancelEventHandler(cmsB_Opening);

       ContextMenuStrip cmsC = new ContextMenuStrip();
       cmsC.ImageList = this.toolIcon;
       /* 添加C菜单*/
       this.ContextMenuStrip = cmsC;
       cmsC.Opening += new CancelEventHandler(cmsC_Opening);
不知道是不是这一句有问题?this.ContextMenuStrip =。。。,在ListView中引用的时候是判断是在A组就调用A菜单,依此类推,我应该怎么写?
[解决办法]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            listView1.View = View.Details;
            listView1.FullRowSelect = true;
            listView1.Columns.Add("Item", 500);
            listView1.Items.Add("1");
            listView1.Items.Add("2");
            ContextMenuStrip cms = new ContextMenuStrip();
            listView1.ContextMenuStrip = cms;
            cms.Opening += new CancelEventHandler(cms_Opening);
        }

        void cms_Opening(object sender, CancelEventArgs e)
        {
            if (listView1.SelectedItems.Count == 0 
[解决办法]
 listView1.SelectedItems[0].Text == "1")
            {
                (sender as ContextMenuStrip).Items.Clear();
                (sender as ContextMenuStrip).Items.Add("1", null, (a, b) => MessageBox.Show("1"));
            }
            else
            { 
                (sender as ContextMenuStrip).Items.Clear();
                (sender as ContextMenuStrip).Items.Add("2", null, (a, b) => MessageBox.Show("2"));
            }
        }
    }
}

新建一个winforms项目,放一个listview
编写如上代码

运行。

热点排行