转载处:http://shancheng2007.blog.163.com/blog/static/496838952010111452015761/
没找到如何禁用某个节点的直接方法,所以就把要禁用的节点ForeColor设成灰色的
然后在TreeView的BeforeSelect, BeforeCheck事件里根据节点颜色判断,如果是灰色的,则不让用户选中该节点
参考代码如下
using System.Drawing;
  //禁用第一个节点
  treeView1.Nodes[0].ForeColor = Color.Gray; 
可以在绑定数据完成后进行,也可以在绑定过程中指定,看个人了和需求了
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node != null)
            {
                if (e.Node.ForeColor == Color.Gray)
                {
                    e.Cancel = true;  //不让选中禁用节点
                }
            }
        }
        private void treeView1_BeforeCheck(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node != null)
            {
                if (e.Node.ForeColor == Color.Gray)
                {
                    e.Cancel = true; //不让选中禁用节点
                }
            }
        }
处理选种节点的时候
  foreach (TreeNode c_tn in tr_SubDepDev.Nodes)
                {
                    if (c_tn.Checked && c_tn.ForeColor != Color.Gray)//设备节点被选中
                    {
                        //在这里处理
                    }
                } 
这样就可以达到基本的目的了~
原文:http://www.cnblogs.com/yangxinghua/p/3998007.html