treeViewで選択されたノードのfile.CreationTimeにアクセスし、treeView外のラベルに表示する必要があります。 .Tagを追加して、現在ディレクトリが選択されているときにうまく動作しますが、ファイルが選択されると、treeView1.SelectedNode.Tagがnullになり、アプリケーションがクラッシュします。TreeNode変数ファイルへのC#アクセスtreeView外のCreateTime
どのように修正するか考えている人はいますか? DirectoryInfo.GetFiles(によって返されたFileInfo配列を超えるときは、ループ
private void ListDirectory(TreeView treeView, string path)
{
treeView1.Nodes.Clear();
var rootDirectoryInfo = new DirectoryInfo(path);
treeView1.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo));
}
private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
{
var directoryNode = new TreeNode(directoryInfo.Name + " (" + DirectorySize(new DirectoryInfo(directoryInfo.FullName)) + " bytes)" + " (" + directoryInfo.GetFileSystemInfos().Length + " files)");
foreach (var directory in directoryInfo.GetDirectories())
directoryNode.Nodes.Add(CreateDirectoryNode(directory));
foreach (var file in directoryInfo.GetFiles())
directoryNode.Nodes.Add(new TreeNode(file.Name + " (" + file.Length + " bytes)"+ file.CreationTime));
directoryNode.Tag = directoryInfo;
return directoryNode;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Tag!=null)
{
var directoryInfo = treeView1.SelectedNode.Tag as DirectoryInfo;
var creationTime = directoryInfo.CreationTime.ToString();
label1.Text = creationTime;
var lastAccessTime = directoryInfo.LastAccessTime;
label2.Text = lastAccessTime.ToString();
var lastWriteTime = directoryInfo.LastWriteTime;
label3.Text = lastWriteTime.ToString();
}
else
{
label1.Text = "";
label2.Text = "";
label3.Text = "";
}
}