标签: treeview

TreeView通过某些节点删除CheckBox

我想删除CheckBoxes,其中Node.Type是5或6.我使用此代码:

private void TvOne_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
    int type = (e.Node as Node).typ;
    if (type == 5 || type == 6)
    {
        Color backColor, foreColor;
        if ((e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected)
        {
            backColor = SystemColors.Highlight;
            foreColor = SystemColors.HighlightText;
        }
        else if ((e.State & TreeNodeStates.Hot) == TreeNodeStates.Hot)
        {
            backColor = SystemColors.HotTrack;
            foreColor = SystemColors.HighlightText;
        }
        else
        {
            backColor = e.Node.BackColor;
            foreColor = e.Node.ForeColor;
        }
        using (SolidBrush brush = new SolidBrush(backColor))
        {
            e.Graphics.FillRectangle(brush, e.Node.Bounds);
        }
        TextRenderer.DrawText(e.Graphics, e.Node.Text, this.TvOne.Font,
            e.Node.Bounds, foreColor, backColor); …
Run Code Online (Sandbox Code Playgroud)

c# checkbox treeview ownerdrawn winforms

26
推荐指数
3
解决办法
3万
查看次数

为WPF Treeview启用滚动

任何人都可以帮我解决如何启用树视图滚动?必须有一个简单的方法,但我不能使它在我的代码中工作.多次尝试失败后,我目前有这样的事情:

        <ScrollViewer CanContentScroll="True">
           <TreeView ...>
           </TreeView>
        </ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

我确实看到了"禁用"滚动条,但是当树视图的音符大于屏幕高度时,不会激活滚动.

wpf treeview scroll

25
推荐指数
2
解决办法
3万
查看次数

右键单击选择.Net TreeNode

当用户右键单击时,我试图在我的树视图上显示一个弹出菜单 - 允许他们选择要应用于所选节点的上下文敏感操作.

用户必须左键单击节点然后右键单击以选择.

是否可以在节点上右键单击选择该节点 - 如果是,那么执行此操作的最佳方法是什么.

c# treeview user-interface winforms

25
推荐指数
3
解决办法
3万
查看次数

有没有在TreeView.Nodes集合中搜索TreeNode.Text字段的方法?

像这样:

TreeNode[] treeNodes = treeView.Nodes.Find(searchString, true);
Run Code Online (Sandbox Code Playgroud)

但我希望它在text现场搜索而不是name字段.

c# treeview treenode winforms

25
推荐指数
2
解决办法
4万
查看次数

将选定的TreeView节点滚动到视图中

我有一个System.Windows.Forms.TreeView停靠在面板内.我正在设置以编程方式选择的节点.我将使用什么方法或属性让树视图将所选内容滚动到视图中?

c# treeview winforms

23
推荐指数
1
解决办法
2万
查看次数

WinForms TreeView - 如何手动"突出显示"节点(就像点击它一样)

我需要知道如何让编程选择的节点以"选中"状态以图形方式进行,就像用户点击它一样.SelectedNode仅在内部选择此选项.非常感谢你!

c# treeview winforms

23
推荐指数
2
解决办法
4万
查看次数

WPF TreeView - 如何滚动如此扩展的分支是可见的

当我在树视图中展开项目以便滚动时,会出现滚动条.但是,它不会向下滚动新扩展的项目分支 - 它们会被控件的底部裁剪掉.因此,当我继续在树的底部扩展项目时,我必须手动向下滚动以查看新的子项.有人建议如何让它自动滚动显示新扩展的项目?

wpf treeview scroll

23
推荐指数
3
解决办法
2万
查看次数

大多数人使用的"标准"JQuery树视图是什么?似乎最受欢迎的插件不再受支持了?

我选择了JQuery作为我的JavaScript库,但现在我对JQuery插件网站感到有些沮丧...网站有点糟糕......插件区域设计得不是很好,我只能找到一些树视图.不再支持投票率最高的那个(链接文本).

有人可以指点我的工业实力树视图吗?

所需特点:

  • 稳定

  • async/ajax会很好

  • 拖放节点会很好

到目前为止,我对JQueryUI很高兴 - 设计很棒.但是,为什么它没有标准树视图?

皮特

treeview jquery jquery-ui jquery-plugins

23
推荐指数
1
解决办法
4万
查看次数

TreeNode选择BackColor,而TreeView没有聚焦

在TreeView没有焦点的情况下,有一种简单的方法可以让选定的TreeNode保留其SystemColors.Highlight BackColor吗?因为即使将HideSelection设置为false,也几乎无法看到所选的BackColor.

TreeView具有焦点时选择的TreeNode:

重点

TreeView没有焦点时选择的TreeNode:

没有重点

提前致谢.

编辑:我知道我可以将DrawMode设置为OwnerDrawAll然后添加自定义DrawNode事件.我之前尝试过这个问题,我遇到的问题是我不知道如何正确地绘制TreeNode的相应ImageKey.

c# treeview custom-draw winforms

23
推荐指数
3
解决办法
3万
查看次数

枚举本质上不是IEnumerable的集合?

当你想递归枚举一个分层对象,根据一些标准选择一些元素时,有许多技术的例子,如"展平",然后使用Linq进行过滤:如下所示:

链接文字

但是,当您枚举类似Form的Controls集合或TreeView的Nodes集合时,我一直无法使用这些类型的技术,因为它们似乎需要一个参数(对于扩展方法),这是一个IEnumerable集合:传入SomeForm.Controls不编译.

我发现最有用的是:

链接文字

哪个为您提供Control.ControlCollection的扩展方法,其中包含IEnumerable结果,然后您可以使用Linq.

我修改了上面的例子来解析TreeView的节点没有问题.

public static IEnumerable<TreeNode> GetNodesRecursively(this TreeNodeCollection nodeCollection)
{
    foreach (TreeNode theNode in nodeCollection)
    {
        yield return theNode;

        if (theNode.Nodes.Count > 0)
        {
            foreach (TreeNode subNode in theNode.Nodes.GetNodesRecursively())
            {
                yield return subNode;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我现在使用扩展方法编写的代码:

    var theNodes = treeView1.Nodes.GetNodesRecursively();

    var filteredNodes = 
    (
        from n in theNodes
            where n.Text.Contains("1")
                select n
    ).ToList();
Run Code Online (Sandbox Code Playgroud)

而且我认为在传递约束的地方可能会有更优雅的方法.

我想知道是否可以一般性地定义这样的过程,以便:在运行时我可以将集合类型以及实际集合传递给泛型参数,因此代码与是否无关它是TreeNodeCollection或Controls.Collection.

我还有兴趣知道是否有任何其他方式(更便宜?fastser?)比第二个链接(上面)中所示,以获得Linq可用的形式的TreeNodeCollection或Control.ControlCollection.

Leppie关于'在第一个(上图)链接的SO帖子中的SelectMany的评论似乎是一个线索.

我对SelectMany的实验是:好吧,称之为"灾难".:)

感谢任何指针.我已经花了几个小时阅读我发现的那些触及这些区域的SO帖子,然后漫无目的地进入像"y-combinator"这样的exotica.一个"谦卑"的经历,我可能会补充:)

c# linq treeview ienumerable controlcollection

22
推荐指数
2
解决办法
6761
查看次数