Winform中如何隐藏或者禁用TreeView的某个节点 RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 似乎不可以,除非你搞一个变量(数组或List)记住它隐藏:先把要隐藏的节点保存到一个变量里,并记住它父节点,然后从treeview上删除这个节点显示:显示时,读这个变量,把根据节点的父节点把它们一一还原回来 不是哥们儿固执,是需求就是这样的,不允许删除的…如果删除就能解决问题我就不需要发帖问了…目前我的想法是:重写TreeView控件,重写子节点,当禁用某节点时设置前景色变成禁用灰,不允许选中,可是不知道怎么重写……希望高手提供思路 不用重写也可以,你把禁用的节点ForeColor设成灰色的然后在TreeView的BeforeSelect, BeforeCheck事件里根据节点颜色判断,如果是灰色的,则不让用户选中该节点 private void button1_Click(object sender, EventArgs e) { //禁用第一个节点 treeView1.Nodes[0].ForeColor = SystemColors.Control; } private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e) { if (e.Node != null) { if (e.Node.ForeColor == SystemColors.Control) { e.Cancel = true; //不让选中禁用节点 } } } private void treeView1_BeforeCheck(object sender, TreeViewCancelEventArgs e) { if (e.Node != null) { if (e.Node.ForeColor == SystemColors.Control) { e.Cancel = true; //不让选中禁用节点 } } } 恢复禁用时,在把颜色改回来treeView1.Nodes[0].ForeColor = SystemColors.WindowText; 为了禁用效果更好点,在禁用时加个判断 //禁用第一个节点 treeView1.Nodes[0].ForeColor = SystemColors.Control; if (treeView1.SelectedNode == treeView1.Nodes[0]) { treeView1.SelectedNode = null; } 三元表达式的一些问题 AD操作类 请教:怎样获取datagrid所绑定的数据,怎样删除datagrid的当前行 开发个人事管理,谁能给个过程 事件移除只能移除一次,为什么? 没分了,但有一个奇怪的问题,请各位帮忙看一下 请教:如何将指定长度的字符串转换成数字形式的编码 SQL :INSERT语句里嵌套查询语句的问题 请问用c#做网页时,如何实现对话框功能? 请问C#中有类似javascript中的eval()的方法嘛?或有没有类似的解决办法? VS2010 编写的窗体程序能不能用 sharpDevelop查看并编辑? c# 调用Telnet获取MAC地址表并返回结果
显示:显示时,读这个变量,把根据节点的父节点把它们一一还原回来
目前我的想法是:
重写TreeView控件,重写子节点,当禁用某节点时设置前景色变成禁用灰,不允许选中,可是不知道怎么重写……
希望高手提供思路
然后在TreeView的BeforeSelect, BeforeCheck事件里根据节点颜色判断,如果是灰色的,则不让用户选中该节点 private void button1_Click(object sender, EventArgs e)
{
//禁用第一个节点
treeView1.Nodes[0].ForeColor = SystemColors.Control;
} private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (e.Node != null)
{
if (e.Node.ForeColor == SystemColors.Control)
{
e.Cancel = true; //不让选中禁用节点
}
}
} private void treeView1_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
if (e.Node != null)
{
if (e.Node.ForeColor == SystemColors.Control)
{
e.Cancel = true; //不让选中禁用节点 }
}
}
treeView1.Nodes[0].ForeColor = SystemColors.WindowText;
//禁用第一个节点
treeView1.Nodes[0].ForeColor = SystemColors.Control;
if (treeView1.SelectedNode == treeView1.Nodes[0])
{
treeView1.SelectedNode = null;
}