前田稔(Maeda Minoru)の超初心者のプログラム入門
/*************************************************/ /*★ 両方の機能を設定した ListView 前田 稔 ★*/ /*************************************************/ using System; using System.Drawing; using System.Windows.Forms; public class MyForm : Form { private ListView listView1; private Point mouseDownPoint = Point.Empty; static string[] str2 = { "にんじん", "ごぼう", "レタス", "とまと", "だいこん" }; public MyForm() { InitializeComponent(); Load += new System.EventHandler(MyForm_Load); } private void InitializeComponent() { this.listView1 = new System.Windows.Forms.ListView(); this.SuspendLayout(); // listView1 this.listView1.Location = new System.Drawing.Point(12, 12); this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(300, 140); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; this.listView1.AllowDrop = true; this.listView1.ItemDrag += new ItemDragEventHandler(ListView1_ItemDrag); this.listView1.DragEnter += new DragEventHandler(this.ListView1_DragEnter); this.listView1.DragDrop += new DragEventHandler(this.ListView1_DragDrop); // MyForm this.ClientSize = new System.Drawing.Size(320, 160); this.Controls.Add(this.listView1); this.Name = "MyForm"; this.ResumeLayout(false); } private void MyForm_Load(object sender, System.EventArgs e) { for (int i = 0; i < str2.GetLength(0); i++) { listView1.Items.Add(str2[i]); } } // 選択 Item(e.Item) を Drag する private void ListView1_ItemDrag(object sender, ItemDragEventArgs e) { DragDropEffects dde = listView1.DoDragDrop(e.Item, DragDropEffects.All); } // Drop の開始 private void ListView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(ListViewItem))) e.Effect = DragDropEffects.Copy; } // データを受け取る private void ListView1_DragDrop(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(ListViewItem))) return; ListViewItem dropItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); // ドラッグされてきた項目を挿入 ListViewItem insertItem = listView1.Items.Add((ListViewItem)dropItem.Clone()); insertItem.Selected = true; } } class form01 { [STAThread] public static void Main() { MyForm mf = new MyForm(); Application.Run(mf); } } |
this.listView1.ItemDrag += new ItemDragEventHandler(ListView1_ItemDrag); // 選択 Item(e.Item) を Drag する private void ListView1_ItemDrag(object sender, ItemDragEventArgs e) { DragDropEffects dde = listView1.DoDragDrop(e.Item, DragDropEffects.All); } |
/*********************************************/ /*★ 複数アイテム選択 ListView 前田 稔 ★*/ /*********************************************/ using System; using System.Drawing; using System.Windows.Forms; using System.IO; using System.Collections.Generic; public class MyForm : Form { private ListView listView1; private Point mouseDownPoint = Point.Empty; private int[] width = { 240, 120, 80 }; private string[] head = { "名前", "更新日付", "サイズ" }; private string path = @"C:\TMP"; //private string path = @"C:\TEST"; public MyForm() { InitializeComponent(); InitializeListView(); Load += new System.EventHandler(MyForm_Load); } private void InitializeComponent() { this.listView1 = new System.Windows.Forms.ListView(); this.SuspendLayout(); // listView1 this.listView1.Location = new System.Drawing.Point(12, 12); this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(460, 380); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; this.listView1.AllowDrop = true; this.listView1.ItemDrag += new ItemDragEventHandler(ListView1_ItemDrag); this.listView1.DragEnter += new DragEventHandler(this.ListView1_DragEnter); this.listView1.DragDrop += new DragEventHandler(this.ListView1_DragDrop); // MyForm this.ClientSize = new System.Drawing.Size(480, 400); this.Controls.Add(this.listView1); this.Name = "MyForm"; this.ResumeLayout(false); } // ListViewコントロールを初期化します。 private void InitializeListView() { // ListViewコントロールのプロパティを設定 listView1.FullRowSelect = true; listView1.GridLines = true; listView1.View = View.Details; // 列ヘッダの作成 ColumnHeader[] columnHead = new ColumnHeader[3]; for (int i=0; i<3; i++) { columnHead[i] = new ColumnHeader(); columnHead[i].Width = width[i]; columnHead[i].Text = head[i]; } listView1.Columns.AddRange(columnHead); } // ListViewコントロールのデータを更新します。 private void MyForm_Load(object sender, System.EventArgs e) { //DirectoryInfoを作成 DirectoryInfo di = new DirectoryInfo(path); string[] item = new string[3]; //ファイル一覧の取得 FileInfo [] fis = di.GetFiles("*.*"); for( int i=0;i<fis.Length;i++) { item[0]= fis[i].FullName; item[1]= fis[i].LastWriteTime.ToString(); item[2]= fis[i].Length.ToString(); listView1.Items.Add(new ListViewItem(item)); } } private void ListView1_ItemDrag(object sender, ItemDragEventArgs e) { List<ListViewItem> selectItems = new List<ListViewItem>(listView1.SelectedItems.Count); foreach (ListViewItem lvi in listView1.SelectedItems) selectItems.Add(lvi); DragDropEffects dde = listView1.DoDragDrop(selectItems, DragDropEffects.All); } private void ListView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(List<ListViewItem>))) e.Effect = DragDropEffects.Copy; } private void ListView1_DragDrop(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(List<ListViewItem>))) return; List<ListViewItem> dropItems = (List<ListViewItem>)e.Data.GetData(typeof(List<ListViewItem>)); // ドラッグされてきた項目を挿入 listView1.SelectedItems.Clear(); for (int i = dropItems.Count-1; i >= 0; --i) { ListViewItem insertItem = listView1.Items.Add((ListViewItem)dropItems[i].Clone()); insertItem.Selected = true; } } } class form01 { [STAThread] public static void Main() { MyForm mf = new MyForm(); Application.Run(mf); } } |