【发布时间】:2017-02-02 20:07:49
【问题描述】:
private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
// Get the node that was clicked
TreeNode selectedNode = treeView1.HitTest(e.Location).Node;
if (selectedNode != null)
{
}
}
如果我有一个根节点:
World
当我点击它时,我会看到这些节点:
World
|____ Blue
|____ Green
|____ Red
|____ Black
|____ yellow
如果我点击 Blue,我会在 Blue 下看到更多节点,例如
World
|____ Blue
| |____ Day
| |____ Night
|____ Green
|____ Red
|____ Black
|____ yellow
现在,如果我单击蓝色,我将获得选定的节点名称 Blue。 selectedNode.Name 将是蓝色
如果我点击 Day 将进入selectedNode.Name Day
但我想要做的是,如果我点击 Day,selectedNode 将
Blue\Day 或 BlueDay
如果在 Day 下还有另一个节点名称 1 我点击 1 所以在 selectedNode.Name 我想看BlueDay1 或者我更喜欢Blue\Day\1
我想要这个\\,所以我可以将它用作目录名称。
问题是我使用selectedNode.Name 作为目录来获取文件:
List<string> ff = new List<string>();
private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
TreeNode selectedNode = treeView1.HitTest(e.Location).Node;
if (selectedNode != null)
{
string tt = mainPath + "\\" + selectedNode.Text;
ff = DirSearch(tt);
timer1.Enabled = true;
}
}
如果我点击蓝色,那么它会得到蓝色下的所有文件,包括子目录。但是,如果我单击 1 并且 1 中有文件,那么它将不会获取任何文件,因为我需要完整的路径名 Blue\Day\1 才能从 1 中获取文件。
这就是我获取文件的方式
static List<string> DirSearch(string sDir)
{
List<string> files = new List<string>();
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d))
{
files.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
return files;
}
这个想法是,如果我想获取 Blue 下的所有文件,我单击 Blue,但如果我想在单击 1 时仅获取 1 中的文件,则它不起作用,因为 1 不是完整路径。
【问题讨论】:
-
离题,但使用
AfterSelect事件而不是MouseClick。