treeview 的NodeMouseClick方法问题
treeview 的NodeMouseClick方法 不管你是双击,还是单击都响应才对的,但是响应以后,相关的函数获取不到正确的值,相信有人也发现了这个问题
private void tVfile_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
tVfile.SelectedNode = e.Node;
int count = tVfile.SelectedNode.Nodes.Count;
for (int i = 0; i < count; i++)
{
string path = tVfile.SelectedNode.Nodes[i].Tag.ToString();
tVfile.SelectedNode.Nodes[i].Nodes.Clear();
String[] files;
try
{
files = Directory.GetFileSystemEntries(path);
}
catch (Exception ex)
{
files = new string[0];
}
if (files.Length == 0)
{ }
else
{
foreach (string file in files)
{
TreeNode node = new TreeNode();
node.Tag = file.ToString();
node.Text = file.Substring(file.LastIndexOf("\\") + 1);
try
{
Icon icon = fileicon.GetSmallIcon(file.ToString());
tVfile.ImageList.Images.Add(icon);
node.ImageIndex = tVfile.ImageList.Images.Count - 1;
}
catch(Exception ex)
{
}
tVfile.SelectedNode.Nodes[i].Nodes.Add(node);

}
}
}
}
这个时候需要把selectnode指定一下,不然发现是上一次的值。
但是双击可以响应
private void tVfile_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
tVfile.SelectedNode = e.Node;
int count = tVfile.SelectedNode.Nodes.Count;
for (int i = 0; i < count; i++)
{
string path = tVfile.SelectedNode.Nodes[i].Tag.ToString();
tVfile.SelectedNode.Nodes[i].Nodes.Clear();
String[] files;
try
{
files = Directory.GetFileSystemEntries(path);
}
catch (Exception ex)
{
files = new string[0];
}
if (files.Length == 0)
{ }
else
{
foreach (string file in files)
{
TreeNode node = new TreeNode();
node.Tag = file.ToString();
node.Text = file.Substring(file.LastIndexOf("\\") + 1);
try
{
Icon icon = fileicon.GetSmallIcon(file.ToString());
tVfile.ImageList.Images.Add(icon);
node.ImageIndex = tVfile.ImageList.Images.Count - 1;
}
catch(Exception ex)
{
}
tVfile.SelectedNode.Nodes[i].Nodes.Add(node);
}
}
}
}但是双击可以响应

浙公网安备 33010602011771号