リストビューのクリアを試してみます。
// listview03.cs
// リストビューのクリア
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
/*
ビルド
mcs listview03.cs /r:System.Windows.Forms.dll /r:System.Drawing.dll
実行
mono listview03.exe
*/
class Form1 : Form
{
// リストビューの生成
public ListView FileListView = new ListView()
{
Dock = DockStyle.Fill,
View = View.Details, // 表示...詳細
};
// コンストラクタ
public Form1()
{
this.Size = new Size(800, 600);
// リストビューの親コントロールの設定
FileListView.Parent = this;
// リストビューにカラムを追加
FileListView.Columns.AddRange(new ColumnHeader[]
{
// 名前、幅
new ColumnHeader(){Text = "Name", Width = 480, }
});
// イベントの登録
this.Load += Form1_Load;
FileListView.ItemActivate += FileListView_ItemActivate;
}
// エントリーポイント
public static void Main()
{
Application.Run(new Form1());
}
// カレントディレクトリの変更
public void ChangeDirectory(string path)
{
Console.WriteLine("{0}", path);
Directory.SetCurrentDirectory(path);
// リストビューのクリア
FileListView.Items.Clear();
// 親ディレクトリの追加
if (Path.GetPathRoot(path) != path)
{
DirectoryInfo parent = Directory.GetParent(path);
string[] items = {"[..]"};
ListViewItem lvi = new ListViewItem(items)
{
Tag = parent,
};
FileListView.Items.Add(lvi);
}
// ディレクトリの追加
DirectoryInfo cdi = new DirectoryInfo(path);
DirectoryInfo[] diArr = cdi.GetDirectories();
foreach(DirectoryInfo di in diArr)
{
string[] items = {String.Format("[{0}]", di.Name)};
ListViewItem lvi = new ListViewItem(items)
{
Tag = di,
};
FileListView.Items.Add(lvi);
}
// ファイルの追加
FileInfo[] fiArr = cdi.GetFiles();
foreach(FileInfo fi in fiArr)
{
string[] items = {String.Format("{0}", fi.Name)};
ListViewItem lvi = new ListViewItem(items)
{
Tag = fi,
};
FileListView.Items.Add(lvi);
}
}
// フォームのロードイベント
public void Form1_Load(object s, EventArgs e)
{
string path = Directory.GetCurrentDirectory();
ChangeDirectory(path);
}
// リストビューのダブルクリック
public void FileListView_ItemActivate(object s, EventArgs e)
{
foreach(ListViewItem item in FileListView.SelectedItems)
{
// 選択した項目はディレクトリか?
if (item.Tag is DirectoryInfo)
{
DirectoryInfo di = (DirectoryInfo)item.Tag;
ChangeDirectory(di.FullName);
}
}
}
}
ファイルの一覧からディレクトリをダブルクリックすると、そのディレクトリへ移動します。
移動する際リストビューの内容をListView.Items.Clear()
でクリアしています。
コメント