【问题标题】:Get all checked nodes of a treeview获取树视图的所有选中节点
【发布时间】:2016-06-14 07:07:31
【问题描述】:

我有一个包含许多节点和许多子节点和下降节点的树视图。 我想通过单击树视图找到选中的节点。 然后我写了如下代码:

internal static IEnumerable<TreeNode> Descendants(this TreeNodeCollection tNode) 
{
    foreach (var node in tNode.OfType<TreeNode>())
    {
        yield return node;

        foreach (var child in node.Nodes.Descendants())
        {
            yield return child;
        }
    }
}

var selectedNodes = treeView1.Nodes.Descendants()
                    .Where(n => n.Checked)
                    .Select(n => n.Text)
                    .ToList();

但我有以下错误:

错误 CS1106:扩展方法必须定义在非泛型静态类中

顺便提一下,这个错误是针对public partial class Form1 : Form的。

请告诉我问题出在哪里?

【问题讨论】:

  • 它明确提到你的Extension 方法必须在static 类中
  • @Chaitanya 你的意思是 Form1: Form 吗?
  • 我不得不猜测,因为您没有在问题中指定。尝试在单独的类中实现您的 extension 方法。也许它可以解决您的问题
  • @Chaitanya 我已经更新了我的问题并提到了错误在哪里。
  • 添加一个新的Class 文件并创建该类static 并添加您的Extension 方法。 public static class TreeViewHelper { publi static IEnumerable&lt;TreeNode&gt; Descendants(this TreeNodeCollection tNode) { //your code }

标签: c# .net linq


【解决方案1】:

SEPARATE 静态类(非嵌套)中编写您的扩展方法。将另一个文件添加到您的项目中,并在那里创建一个静态类,其中包含您的静态扩展方法。

您的问题中的错误(以及您尝试将其添加到嵌套类中的错误)应该是不言自明的

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多