c# treeview查找并选中节点_(九)C#WinFrom自定义控件系列-树

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

本系列文章将讲解各种控件的开发及思路,欢迎各位批评指正。

此系列控件开发教程将全部在原生控件基础上进行重绘开发,目标的扁平化、漂亮、支持触屏。

如果有什么好的建议也可以评论留言来交流。

源码地址:

GitHub:https://github.com/kwwwvagaa/NetWinformControl

码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492

目录

http://toutiao.com/item/6824291838963220999/

准备工作

对原始树控件treeview进行扩展以更改样式

先了解一下我们需要哪些功能,控件ain可以更改整好颜色,行高,选中效果,分割线等

开始

添加组件,命名TreeViewEx 继承TreeView

先看下属性

  1  private const int WS_VSCROLL = 2097152;  2   3         private const int GWL_STYLE = -16;  4   5         private Dictionary _lstTips = new Dictionary();  6   7         private Font _tipFont = new Font("Arial Unicode MS", 12f);  8   9         private Image _tipImage = Resources.tips; 10  11         private bool _isShowTip = false; 12  13         private bool _isShowByCustomModel = true; 14  15         private int _nodeHeight = 50; 16  17         private Image _nodeDownPic = Resources.list_add; 18  19         private Image _nodeUpPic = Resources.list_subtract; 20  21         private Color _nodeBackgroundColor = Color.FromArgb(61, 60, 66); 22  23         private Color _nodeForeColor = Color.White; 24  25         private bool _nodeIsShowSplitLine = false; 26  27         private Color _nodeSplitLineColor = Color.FromArgb(54, 53, 58); 28  29         private Color m_nodeSelectedColor = Color.FromArgb(255, 121, 74); 30  31         private Color m_nodeSelectedForeColor = Color.White; 32  33         private bool _parentNodeCanSelect = true; 34  35         private SizeF treeFontSize = SizeF.Empty; 36  37         private bool blnHasVBar = false; 38  39         public Dictionary LstTips 40         { 41             get 42             { 43                 return this._lstTips; 44             } 45             set 46             { 47                 this._lstTips = value; 48             } 49         } 50  51         [Category("自定义属性"), Description("角标文字字体")] 52         public Font TipFont 53         { 54             get 55             { 56                 return this._tipFont; 57             } 58             set 59             { 60                 this._tipFont = value; 61             } 62         } 63  64         [Category("自定义属性"), Description("是否显示角标")] 65         public Image TipImage 66         { 67             get 68             { 69                 return this._tipImage; 70             } 71             set 72             { 73                 this._tipImage = value; 74             } 75         } 76  77         [Category("自定义属性"), Description("是否显示角标")] 78         public bool IsShowTip 79         { 80             get 81             { 82                 return this._isShowTip; 83             } 84             set 85             { 86                 this._isShowTip = value; 87             } 88         } 89  90         [Category("自定义属性"), Description("使用自定义模式")] 91      
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,要在运行时查找 TreeView 控件并给它赋值,可以按照以下步骤进行实现: 1. 确保你的窗体上有一个 TreeView 控件,并正确命名。例如,假设你有一个名为 "treeView1" 的 TreeView 控件。 2. 在需要查找并赋值的地方,使用 FindControl 方法来查找控件。这个方法可用于在窗体及其子控件中递归查找指定名称的控件。 ```csharp TreeView treeView = FindControl<TreeView>("treeView1"); ``` 注意:FindControl 方法是自定义的辅助方法,用于在窗体及其子控件中递归查找控件。你需要自行实现这个方法,下面会给出示例。 3. 确保找到了控件后,你可以通过调用 TreeView 控件的相应方法或属性来设置节点节点的属性。 ```csharp if (treeView != null) { // 清空已有的节点 treeView.Nodes.Clear(); // 创建新的根节点 TreeNode rootNode = new TreeNode("根节点"); // 创建子节点 TreeNode childNode1 = new TreeNode("子节点1"); TreeNode childNode2 = new TreeNode("子节点2"); // 将子节点添加到根节点 rootNode.Nodes.Add(childNode1); rootNode.Nodes.Add(childNode2); // 将根节点添加到 TreeView 控件 treeView.Nodes.Add(rootNode); } ``` 下面是一个示例的 FindControl 方法的实现: ```csharp private T FindControl<T>(string name, Control parent) where T : Control { foreach (Control control in parent.Controls) { if (control.Name == name && control is T) { return (T)control; } else if (control.HasChildren) { T foundControl = FindControl<T>(name, control); if (foundControl != null) { return foundControl; } } } return null; } private T FindControl<T>(string name) where T : Control { return FindControl<T>(name, this); } ``` 使用这个示例中的 FindControl 方法,你可以在窗体及其子控件查找指定名称的 TreeView 控件。然后,根据需要创建节点并赋值。 希望这个示例对你有所帮助!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值