- #region listView分组
- imageList1.Images.Add("ImageKey1", Image.FromFile("图片路径"));
- imageList1.Images.Add("ImageKey2", Image.FromFile("图片路径"));
- imageList1.Images.Add("ImageKey3", Image.FromFile("图片路径"));
- imageList1.Images.Add("newImageKey", Image.FromFile("图片路径"));
- // 关联右键菜单
- listView1.ContextMenuStrip = contextMenuStrip1;
- // 关联imageList
- listView1.LargeImageList = imageList1;
- listView1.View = View.LargeIcon;
- // 设置图片对应的深度值
- imageList1.ColorDepth = ColorDepth.Depth32Bit;
- ListViewItem[] items = new ListViewItem[3];
- ListViewGroup group1 = new ListViewGroup("Group1");
- ListViewGroup group2 = new ListViewGroup("Group2");
- items[0] = new ListViewItem("viewItem1", "ImageKey1", group1);
- /* 设置listView 项stringKey,这里设置项stringKey的目的是为了后面根据相应状态
- * 改变项图片;
- * 在实际应用中,items的项数往往都是不定的,设置stringKey后,改变图片时便可不用项索引
- * 比如通过 listView1.Items["itemStringKey2"].ImageKey = "newImageKey";
- * 便可直接改变第2项的图片 */
- items[0].Name = "itemStringKey1";
- items[1] = new ListViewItem("viewItem2", "ImageKey2", group1);
- items[1].Name = "itemStringKey2";
- items[2] = new ListViewItem("viewItem3", "ImageKey3", group2);
- items[2].Name = "itemStringKey3";
- listView1.Groups.Add(group1);
- listView1.Groups.Add(group2);
- listView1.Items.AddRange(items);
- #endregion
- #region 右键菜单的动态添加
- private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
- {
- if (listView1.SelectedItems.Count == 0) //有选中项时才会弹出右键菜单
- {
- e.Cancel = true;
- return;
- }
- }
- /// <summary>
- /// 添加右键菜单项
- /// </summary>
- /// <param name="text">要显示的文字,如果为 - 则显示为分割线</param>
- /// <param name="cms">要添加到的子菜单集合</param>
- /// <param name="callback">点击时触发的事件</param>
- /// <returns>生成的子菜单,如果为分隔条则返回null</returns>
- ToolStripMenuItem AddContextMenu(string text, ToolStripItemCollection cms, EventHandler callback)
- {
- if (text == "-")
- {
- ToolStripSeparator tsp = new ToolStripSeparator();
- cms.Add(tsp);
- return null;
- }
- else if (!string.IsNullOrEmpty(text))
- {
- ToolStripMenuItem tsmi = new ToolStripMenuItem(text, Image.FromFile("图标路径");
- if (callback != null)
- {
- tsmi.Click += callback;
- }
- cms.Add(tsmi);
- tsmi.Font = new Font("Arial", 9, FontStyle.Regular); //字体设置
- //tsmi.Image = Image.FromFile("图标路径"); //菜单图标设置
- return tsmi;
- }
- return null;
- }
- /// <summary>
- /// 菜单事件
- /// </summary>
- void menuClicked(object sender, EventArgs e)
- {
- ToolStripMenuItem stripItem = (ToolStripMenuItem)sender;
- string parentItemText = stripItem.OwnerItem.Text;
- MessageBox.Show(parentItemText + stripItem.Text + "事件");
- }
- ToolStripMenuItem subItem;
- private void listView1_MouseClick(object sender, MouseEventArgs e)
- {
- contextMenuStrip1.Items.Clear();
- //添加主菜单1
- subItem = AddContextMenu("主菜单1", contextMenuStrip1.Items, menuClicked);
- //添加子菜单
- AddContextMenu("子菜单1", subItem.DropDownItems, new EventHandler(menuClicked));
- AddContextMenu("子菜单2", subItem.DropDownItems, new EventHandler(menuClicked));
- //添加主菜单2
- subItem = AddContextMenu("主菜单2", contextMenuStrip1.Items, menuClicked);
- //添加子菜单
- AddContextMenu("子菜单1", subItem.DropDownItems, new EventHandler(menuClicked));
- AddContextMenu("子菜单2", subItem.DropDownItems, new EventHandler(menuClicked));
- }
- #endregion
listView分组及其右键菜单的动态添加
最新推荐文章于 2022-08-01 16:14:16 发布