В функцию не передаётся TreeNode.Tag. Я делаю что то не так?
Делаю текстовый редактор. Хочу чтобы при нажатии на элемент TreeView открывался соответствующий файл, не находящийся в директории с .exe файлом редактора.
В функции создания Node-ов я задаю путь до файла в Tag и он выводится, а когда я вывожу его в TreeView_AfterSelect, выводится пустота, ну и файл открыть не получается
C#
private void ListDirectory(TreeView treeView, string directoryName)
{
treeView.Nodes.Clear();
var rootDirectoryInfo = new DirectoryInfo(directoryName);
treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo, directoryName));
}
private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo, string directoryName)
{
var directoryNode = new TreeNode(directoryInfo.Name);
foreach (var directory in directoryInfo.GetDirectories())
{
directoryNode.Nodes.Add(CreateDirectoryNode(directory, directoryName));
}
foreach (var file in directoryInfo.GetFiles())
{
var filename = new TreeNode(file.Name);
directoryNode.Nodes.Add(filename);
directoryNode.Tag = directoryName + "\\" + file.Name;
MessageBox.Show((string)directoryNode.Tag); // здесь Tag выводиться нормально
}
return directoryNode;
}
private void открытьПапкуToolStripMenuItem_Click(object sender, EventArgs e)
{
FolderBrowserDialog FBD = new FolderBrowserDialog();
FBD.ShowNewFolderButton = true;
if (FBD.ShowDialog() == DialogResult.OK)
{
treeView.Nodes.Clear();
var DI = new DirectoryInfo(FBD.SelectedPath);
ListDirectory(treeView, FBD.SelectedPath);
treeView.AfterSelect += TreeView_AfterSelect;
}
}
private void TreeView_AfterSelect(object sender, TreeViewEventArgs e)
{
string file = (string)e.Node.Tag;
MessageBox.Show(file); // здесь Tag пустой
if (File.Exists(file))
{
string filetext = File.ReadAllText(file);
textBox.Text = filetext;
}
}