Я не уверен, что вы отображаете свой список, и в зависимости от используемого вами пользовательского интерфейса и / или фреймворка, могут быть другие способы достичь этого, но простой подход к обходу структуры вашей папки будет использовать некоторую простую рекурсию , Пример:
public class Resource
{
public string Name { get; set; }
public string Type { get; set; }
public bool Visible { get; set; }
public List<Resource> Children { get; set; }
}
public class Form
{
public void ChangeVisibility(Resource resource)
{
if (resource.Type != "Folder") return;
resource.Visible = !resource.Visible;
if (resource.Children.Any())
{
resource.Children.ForEach(ChangeVisibility);
}
}
}