前田稔(Maeda Minoru)の超初心者のプログラム入門
/*********************************************/ /*★ エクスプローラ ⇒ 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"; 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.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)); } } // Drop の開始 private void ListView1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.All; } // DataObject を string の配列で受け取る private void ListView1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { foreach(string fileName in (string[])e.Data.GetData(DataFormats.FileDrop)) { listView1.Items.Add(fileName); } } } } class form01 { [STAThread] public static void Main() { MyForm mf = new MyForm(); Application.Run(mf); } } |
private string path = @"C:\TMP"; |
foreach(string fileName in (string[])e.Data.GetData(DataFormats.FileDrop)) { listView1.Items.Add(fileName); } |
/*********************************************/ /*★ ListView ⇒ エクスプローラ 前田 稔 ★*/ /* コピーのときは Crtl を押しながら */ /*********************************************/ 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"; 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(460, 380); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; this.listView1.AllowDrop = true; this.listView1.ItemDrag += new ItemDragEventHandler(ListView1_ItemDrag); // MyForm this.ClientSize = new System.Drawing.Size(480, 400); this.Controls.Add(this.listView1); this.Name = "MyForm"; this.ResumeLayout(false); } // ListViewコントロールを初期化します。 private void MyForm_Load(object sender, System.EventArgs e) { // 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); ListReset(); } // ListView コントロールのデータを更新 private void ListReset() { //DirectoryInfoを作成 DirectoryInfo di = new DirectoryInfo(path); string[] item = new string[3]; listView1.Items.Clear(); //ファイル一覧の取得 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)); } } // DataObject を渡す private void ListView1_ItemDrag(object sender, ItemDragEventArgs e) { System.Collections.Specialized.StringCollection files = new System.Collections.Specialized.StringCollection(); for (int i = 0; i < listView1.SelectedItems.Count; i++) files.Add(listView1.SelectedItems[i].Text); DataObject dataObj = new DataObject(); dataObj.SetFileDropList(files); listView1.DoDragDrop(dataObj, DragDropEffects.All); ListReset(); } } class form01 { [STAThread] public static void Main() { MyForm mf = new MyForm(); Application.Run(mf); } } |
// DataObject を渡す private void ListView1_ItemDrag(object sender, ItemDragEventArgs e) { System.Collections.Specialized.StringCollection files = new System.Collections.Specialized.StringCollection(); for (int i = 0; i < listView1.SelectedItems.Count; i++) files.Add(listView1.SelectedItems[i].Text); DataObject dataObj = new DataObject(); dataObj.SetFileDropList(files); listView1.DoDragDrop(dataObj, DragDropEffects.All); ListReset(); } |
files.Add(listView1.SelectedItems[i].Text); |