C#正在展开上选择treeview停止节点
在我的应用程序中,我使用树视图。当用户单击[+]展开节点时,该节点将更改为选定节点。我怎样才能阻止这一切C#正在展开上选择treeview停止节点,c#,winforms,treeview,C#,Winforms,Treeview,在我的应用程序中,我使用树视图。当用户单击[+]展开节点时,该节点将更改为选定节点。我怎样才能阻止这一切 private void tvFileStructure_BeforeExpand(object sender, TreeViewCancelEventArgs e) { if (e.Node.Text != "Network") { int unauthorisedAccessExceptions = 0;
private void tvFileStructure_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
if (e.Node.Text != "Network")
{
int unauthorisedAccessExceptions = 0;
try
{
TreeNode newSelected = e.Node;
DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
TreeNode child = newSelected.FirstNode;
if (child.Level < 3)
{
while (child != null)
{
// Only try to populate if there aren't any children
if (child.FirstNode == null)
{
DirectoryInfo[] subDirs = ((DirectoryInfo)child.Tag).GetDirectories();
if (subDirs.Length != 0)
{
getDirectories(subDirs, child);
}
}
child = child.NextNode;
}
}
}
catch (UnauthorizedAccessException)
{
unauthorisedAccessExceptions++;
}
if (unauthorisedAccessExceptions > 0)
{
MessageBox.Show("There were " + unauthorisedAccessExceptions.ToString() + " folder(s) that you do not have access to.", "Warning...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
private void tvFileStructure\u在展开之前(对象发送方,TreeViewCancelEventArgs e)
{
如果(e.Node.Text!=“网络”)
{
int UnauthorizedAccessExceptions=0;
尝试
{
TreeNode newSelected=e.节点;
DirectoryInfo nodeDirInfo=(DirectoryInfo)newSelected.Tag;
TreeNode子节点=newSelected.FirstNode;
如果(子级<3)
{
while(child!=null)
{
//只有在没有任何子对象时才尝试填充
if(child.FirstNode==null)
{
DirectoryInfo[]子目录=((DirectoryInfo)child.Tag).getDirectory();
如果(细分长度!=0)
{
获取目录(子目录、子目录);
}
}
child=child.NextNode;
}
}
}
捕获(未经授权的访问例外)
{
未经授权的访问异常++;
}
如果(未经授权的访问异常>0)
{
MessageBox.Show(“存在您无权访问的“+未经授权的AccessExceptions.ToString()+”文件夹。”,“警告…”,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
}
正如Hans提到的,这不是标准WinForms树视图的默认行为。但是,您可以在BeforeSelect事件中取消更改选择:
void tvFileStructure_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (iDontWantToSelectThis)
{
e.Cancel = true;
}
}
winform的TreeView控件在默认情况下不执行此操作。后代码,实际上复制了问题。如果知道为什么编辑被否决,那就好了。这是我认为唯一相关的源代码,它相当容易阅读。我只在崩溃时体验过这一点,而不是在扩展时。这就是你面临的问题吗?如果是这样,我可以发布代码来禁用崩溃时的行为。