【发布时间】:2019-03-16 16:22:05
【问题描述】:
我想用 Windows 窗体创建一个文件资源管理器,我已经做了一些事情,但是当我想使用我的 ListView 的 DoubleClick 事件时,我不知道如何编写文件资源管理器需要在不同时采取不同的行动我双击文件或文件夹。
我的目标是:
- 单击文件 - 将其文本加载到 TextBox 中
- 单击一个目录 - 打开它并将其加载到列表视图中。
我也知道如何做 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 { }
}
}
【问题讨论】:
-
如何将文件和目录放入 ListView?无论做什么,都必须存储它放置的是文件还是目录。您的 DoubleClick 也必须使用存储的内容。
-
switch (listViewItem) { case DirectotyInfo di: DoDirectoryThings(di); break; case FileInfo fi: DoFileThings(fi); break; } -
我编辑了我的原始帖子,抱歉我忘了写下来。
-
你有一个空的 catch 语句......你可能隐藏了一个问题......空的 catch 语句总是不好的......你可能想要修改你给用户的消息......但作为程序员......你总是想知道发生了什么以便采取适当的行动
-
您没有分配
ListViewItem任何DirectotyInfo或FileInfo。如果您将其分配给Tag属性,您可以稍后测试Tag是一个还是另一个,例如使用我之前评论中的 switch 语句。
标签: c# listview windows-forms-designer fileinfo directoryinfo