我想使用Windows Forms做一个文件浏览器,但是我已经做了一些事情,但是当我想使用ListView的DoubleClick事件时,我不知道如何编码该文件浏览器需要采取不同的动作,我双击文件或文件夹。
我的目标是:
我也知道如何做1.和2.,只是我不知道如何使DoubleClick函数知道ListView中选定的项目是1.还是2.。
我这样构建ListView:
private void miOpen_Click(object sender, EventArgs e)
{
InputDialog dlg = new InputDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
DirectoryInfo parentDI = new DirectoryInfo(dlg.Path);
listView1.Items.Clear();
try
{
foreach (DirectoryInfo df in parentDI.GetDirectories())
{
ListViewItem lvi = new ListViewItem(new string[] {
df.Name, df.Parent.ToString(),
df.CreationTime.ToShortDateString(), df.FullName });
listView1.Items.Add(lvi);
}
foreach (FileInfo fi in parentDI.GetFiles())
{
ListViewItem lvi = new ListViewItem(new string[] {
fi.Name, fi.Length.ToString(),
fi.CreationTime.ToShortDateString(), fi.FullName } );
listView1.Items.Add(lvi);
}
}
catch { }
}
}
答案 0 :(得分:0)
将DirectoryInfo
或FileInfo
对象添加到Tag
的{{1}}属性中。即
ListViewItem
或提供文件信息:
...
var lvi = new ListViewItem(new string[] {
df.Name,
df.Parent.ToString(),
df.CreationTime.ToShortDateString(),
df.FullName
});
lvi.Tag = df;
listView1.Items.Add(lvi);
...
然后,在列表视图中选择一个项目后:
lvi.Tag = fi;
答案 1 :(得分:0)
尝试以下代码:
FileAttributes fileAttributes = File.GetAttributes("C:\\file.txt");
if (fileAttributes.HasFlag(FileAttributes.Directory))
Console.WriteLine("This path is for directory");
else
Console.WriteLine("This path is for file");