当前位置: 移动技术网 > IT编程>开发语言>c# > DevExpress实现禁用TreeListNode CheckBox的方法

DevExpress实现禁用TreeListNode CheckBox的方法

2019年07月18日  | 移动技术网IT编程  | 我要评论

很多时候在进行c#项目的实际开发中,会需要根据条件来设置节点不可勾选,查看devexpress文档发现通过其customdrawnodecheckbox和beforechecknode事件组合使用可以达到,一般设置节点不可以勾选的规则是一样的,所以对代码进行稍微封装。本文实例就展示了devexpress实现禁用treelistnode checkbox的方法。具体如下:

主要功能代码如下:

/// <summary>
/// 禁用checkbox
/// 说明
/// 在customdrawnodecheckbox事件中使用
/// </summary>
/// <param name="tree">treelist</param>
/// <param name="conditionhanlder">委托</param>
/// <param name="e">customdrawnodecheckboxeventargs</param>
public static void disabledcheckbox(this treelistnode tree, predicate<treelistnode> conditionhanlder, customdrawnodecheckboxeventargs e)
{
  if (conditionhanlder(e.node))
  {
 e.objectargs.state = objectstate.disabled;
  }
}
/// <summary>
/// 禁止操作节点checkbox
/// 说明
/// 在beforechecknode事件中使用
/// </summary>
/// <param name="tree">treelistnode</param>
/// <param name="conditionhanlder">委托</param>
/// <param name="e">checknodeeventargs</param>
public static void disabledsetcheckbox(this treelistnode tree, predicate<treelistnode> conditionhanlder, checknodeeventargs e)
{
  if (conditionhanlder(e.node))
  {
 e.cancheck = false;
  }
}

使用示例如下:

/// <summary>
/// customdrawnodecheckbox事件
/// </summary>
void lhtree_customdrawnodecheckbox(object sender, customdrawnodecheckboxeventargs e)
{
  e.node.disabledcheckbox(disablenodecheckboxrule, e);
}
/// <summary>
/// beforechecknode事件
/// </summary>
void lhtree_beforechecknode(object sender, checknodeeventargs e)
{
  e.node.disabledsetcheckbox(disablenodecheckboxrule, e);
}
/// <summary>
/// disable treelistnode规则
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
private bool disablenodecheckboxrule(treelistnode node)
{
  bool _disable = false;
  if (oplampcfglist.count > 0)
  {
 string _cabid = oplampcfglist[0].cabid;
 nodetype _curtype = node.getnodetype();
 if (_curtype == nodetype.lamp)//当节点是灯类型且父节点keyid等于_cabid时候,屏蔽checkbox
 {
   _disable = node.parentnode.parentnode.getkeyid().equals(_cabid);
 }
 if (_curtype == nodetype.pole)//当节点是杆类型且父节点keyid等于_cabid时候,屏蔽checkbox
 {
   _disable = node.parentnode.getkeyid().equals(_cabid);
 }
 if (_curtype == nodetype.cab && node.getkeyid().equals(_cabid))//当节点是箱类型keyid等于_cabid时候,屏蔽checkbox
 {
   _disable = true;
 }
 if (_curtype == nodetype.area || _curtype == nodetype.cabsgrouproot)//当节点类型等于地域或者根节点时候,屏蔽checkbox
 {
   _disable = true;
 }
  }
  return _disable;
}

代码运行效果如下:

希望本文代码能对大家有所帮助!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网