C#winform中ListView及ContextMenuStrip的使用

1.新建一個Windows窗體應用程序設計模式

 2.添加文件夾及圖片資源函數

文件夾圖片(folder.png),文件圖片(file.png)this

 3.在設計模式下添加控件spa

即:1個ListView(lvwData)、2個ImageList(imgLarge,imgSmall),1個ContextMenuStrip(cmsStyle),以下所示:設計

4.設置各控件詳細屬性3d

2個ImageList(imgLarge,imgSmall)添加Images、設置ImageSize(imgLarge--32*32, imgSmall--16*16),以下:code

  

ContextMenuStrip(cmsStyle)添加Items,以下:orm

ListView(lvwData)要添加ItemsColumns,綁定ContextMenuStrip(cmsStyle)、LargeImageListSmallImageListblog


 

界面設計完成後,鎖定全部控件,這是個好習慣~~事件

 5.爲ContextMenuStrip(cmsStyle)的每一個子項添加事件處理邏輯

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 
 10 namespace Controls
 11 {
 12     public partial class MainForm : Form
 13     {
 14         /// <summary>
 15         /// 默認構造函數
 16         /// </summary>
 17         public MainForm()
 18         {
 19             InitializeComponent();
 20 
 21             this.大圖標ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
 22             this.詳細信息ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
 23             this.平鋪ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
 24             this.小圖標ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
 25             this.列表ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
 26         }
 27 
 28         #region 鼠標右鍵勾選事件處理
 29         /// <summary>
 30         /// 設定右鍵菜單勾選項,設置ListView列表顯示樣式
 31         /// </summary>
 32         /// <param name="sender"></param>
 33         /// <param name="e"></param>
 34         private void ToolStripMenuItem_Click(object sender, EventArgs e)
 35         {
 36             ToolStripMenuItem tsMenumItem = sender as ToolStripMenuItem;
 37             if (tsMenumItem.Checked)
 38             {
 39                 return;//已經選中則返回
 40             }
 41             else
 42             {
 43                 //清除勾選的右鍵菜單項
 44                 ClearCheckState(cmsStyle);
 45                 //勾選鼠標選中的右鍵菜單項
 46                 tsMenumItem.Checked = true;
 47             }
 48             //設置ListView列表顯示樣式
 49             SetDisplayStyle(tsMenumItem.Text);
 50         }
 51 
 52         /// <summary>
 53         /// 清除勾選的右鍵菜單項
 54         /// </summary>
 55         /// <param name="cms">右鍵菜單</param>
 56         private void ClearCheckState(ContextMenuStrip cms)
 57         {
 58             ToolStripMenuItem tsMenumItemTemp;
 59             for (int i = 0; i < cms.Items.Count; i++)
 60             {
 61                 if (!(cms.Items[i] is ToolStripMenuItem))
 62                 {
 63                     continue;
 64                 }
 65                 tsMenumItemTemp = cms.Items[i] as ToolStripMenuItem;
 66                 if (tsMenumItemTemp.Checked)
 67                 {
 68                     tsMenumItemTemp.Checked = false;
 69                 }
 70             }
 71         }
 72 
 73         /// <summary>
 74         /// 設置ListView列表顯示樣式
 75         /// </summary>
 76         /// <param name="name"></param>
 77         private void SetDisplayStyle(string name)
 78         {
 79             foreach (ListViewItem lvi in listData.Items)
 80             {
 81                 if (name == "詳細信息")
 82                 {
 83                     lvi.ImageIndex = 1;
 84                 }
 85                 else
 86                 {
 87                     lvi.ImageIndex = 0;
 88                 }
 89             }
 90             switch (name)
 91             {
 92                 case "大圖標":
 93                     listData.View = View.LargeIcon;
 94                     break;
 95                 case "詳細信息":
 96                     listData.View = View.Details;
 97                     break;
 98                 case "小圖標":
 99                     listData.View = View.SmallIcon;
100                     break;
101                 case "列表":
102                     listData.View = View.List;
103                     break;
104                 case "平鋪":
105                     listData.View = View.Tile;
106                     break;
107             }
108         }
109         #endregion
110     }
111 }

6.運行效果以下所示:

相關文章
相關標籤/搜索