文档章节

【Visual Studio 扩展工具】如何在ComponentOneFlexGrid树中显示RadioButton

葡萄城技术团队
 葡萄城技术团队
发布于 2018/12/19 10:49
字数 907
阅读 22
收藏 0

概述

在ComponentOne Enterprise .NET控件集中,FlexGrid表格控件是用户使用频率最高的控件之一。它是一个功能强大的数据管理工具,轻盈且灵动,以分层的形式展示数据(数据呈现更加直观)。

C1FlexGrid Hierarchy

FlexGrid 简介

FlexGrid 是业界推崇的 .NET 数据表格,集成于 ComponentOne Enterprise .NET控件集中,可灵活、轻量、快速用于 WPF、WinForm、UWP、MVC、Silverlight、ActiveX平台。

分层数据展示

在分层数据展示中,FlexGrid 可以使用Node.Checked属性在任何节点行之前显示CheckBox。 然后,父节点之前的这些复选框可用于添加功能,例如启用/禁用或选择/取消选择树中的所有子节点。

假设用户想要利用RadioButton来代替这些复选框,并且,需要在对子节点进行“选择/取消”按钮操作时,同时影响父节点状态的功能,利用 FlexGrid 数该如何实现?

C1FlexGrid RadioButtons

是否有可能在树中显示单选按钮?

答案是肯定的。 诀窍是使用 FlexGrid网格中子节点的Node.Image属性显示RadioButton图像。

Node child = c1FlexGrid1.Rows.AddNode(1);
child.Image = Image.FromFile("../../Resources/Img_Unchecked.png");

我们刚刚展示了效果图。 现在,我们需要在改变“选中/取消”父节点时同时影响子节点状态。 为了满足这一要求,FlexGrid 网格的CellChecked事件将是一个不错的选择。当用户改变父节点当前状态时,它会被触发。

private void C1FlexGrid1_CellChecked(object sender, RowColEventArgs e)
{
   //Get the checked/unchecked node row
   Node node = c1FlexGrid1.Rows[e.Row].Node;
   //If node row is itself a parent
   if (node.Parent == null)
   {
      //If checked
      if (node.Checked == CheckEnum.Checked)
      {
         //For each child row
         foreach(Node childNode in node.Nodes)
         {
            //Enabled
            childNode.Row.AllowEditing = true;
            childNode.Row.StyleNew.BackColor = Color.White;
         }
      }
      //If unchecked
      else if(node.Checked == CheckEnum.Unchecked)
      {
         //For each child row
         foreach (Node childNode in node.Nodes)
         {
            //Disabled
            childNode.Row.AllowEditing = false;
            childNode.Row.StyleNew.BackColor = Color.LightGray;
         }
      }
   }
}

接下来,如果通过网格的MouseDown事件中的代码启用了子节点,它将处理单选按钮的切换。

private void C1FlexGrid1_MouseDown(object sender, MouseEventArgs e)
{
   HitTestInfo hti = c1FlexGrid1.HitTest(e.Location);
   //Get node row corresponding to clicked row
   Node node = c1FlexGrid1.Rows[hti.Row].Node;
   Rectangle cellBounds = c1FlexGrid1.GetCellRect(hti.Row, hti.Column);
   //If it is a child row
   if(node.Parent != null)
   {
      //Only for RadioButton
      if (hti.Column == 1 && node.Level == 1 && (hti.X >= cellBounds.X + 33) && (hti.X <= cellBounds.X + 43))
      {
         //Check if enabled
         if(node.Row.AllowEditing)
         {
            //Currently unchecked
            if (Convert.ToInt32(node.Key) == 0)
            {
               //Checked state
               node.Image = Image.FromFile("../../Resources/Img_Checked.png");
               node.Key = 1;
            }
            //Currently checked
            else
            {
               //Unchecked state
               node.Image = Image.FromFile("../../Resources/Img_Unchecked.png");
               node.Key = 0;
            }
         }
      }
   }
}

在上面的代码中,我们在Node.Key属性中存储二进制状态:0表示未检查状态,1表示已检查状态。

C1FlexGrid in action

以上就是关于:如何在ComponentOne FlexGrid树中显示RadioButton的具体做法。与此同时,如果需要显示RadioButton以外的控件,ComponentOne 也同样支持!


ComponentOne Enterprise | 下载试用

ComponentOne是一款专注于企业应用高性能开发的 .NET 全功能控件套包,包含300余种控件,支持7大平台,涵盖7大功能模块。较于市面上其他同类产品,ComponentOne更加轻盈,功能更加强大,20多年的开发经验,将为您的应用系统带来更为安全的使用体验。纯中文操作界面,一对一技术支持,厂商级的技术服务,共同造就了这款国际顶级控件套包。

您对ComponentOne 产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>> 技术支持论坛

© 著作权归作者所有

葡萄城技术团队

葡萄城技术团队

粉丝 404
博文 582
码字总数 898714
作品 20
西安
高级程序员
私信 提问
如何在ComponentOneFlexGrid树中显示RadioButton

概述 在ComponentOne Enterprise .NET控件集中,FlexGrid表格控件是用户使用频率最高的控件之一。它是一个功能强大的数据管理工具,轻盈且灵动,以分层的形式展示数据(数据呈现更加直观)。...

葡萄城技术团队
2018/12/19
25
0
[Android开发]关于RadioButton的checked问题

在Android的UI控件中,关于RadioXX有两个控件,一个是RadioGroup,一个是RadioButton。 顾名思义,一般情况下,会使用RadioGroup作为RadioButton的父控件。 如何设置RadioButton的选中状态 ...

Haffe
2014/09/28
5
0
ViewPager+RadioButton仿QQ效果

RadioButton是自己定制的, 设置android:button="@null" 然后再设置backgroud。 涉及到的问题: 1、如何让RadioGroup在底部,且RadioGroup和Viewpager互不遮挡: 先定义RadioGroup,设置ali...

亓斌哥哥
2014/09/21
10.2K
2
单选按钮(RadioButton)——Mars Android开发视频教程之第一季第十集(重)

1· 什么是单选按钮(RadioButton)? 这样的按钮就叫单选按钮,这里有两组单选按钮;一组单选按钮中,只能有一个选项被选中; 2· RadioGroup与RadioButton RadioGroup代表组;RadioButton...

周田
2015/08/18
60
0
J2ME GUI实战之六 ----------LWUIT的Label、CheckBox、RadioButton

本文来自:http://blog.csdn.net/hellogv/ ,转载必须注明出处! 文章写到这里,想必大家也对LWUIT有个大概的了解了,至少也该知道LWUIT可以做些什么。九宫图只是LWUIT的Button控件的典型应用...

晨曦之光
2012/03/14
121
0

没有更多内容

加载失败,请刷新页面

加载更多

移动深度学习:人工智能的深水区

人工智能技术经历6年的快速发展,重新定义了很多行业的用户体验,而这仅是开始。 随着5G商用大规模落地,以及智能手机硬件性能越来越强、AIoT设备的快速普及,基于云-边缘-端算法和算力结构的...

博文视点Bv
27分钟前
4
0
vim 分屏 操作

$vim -On file file2 #大写O垂直分屏打开文件 $vim -on file file2 #小写水平打开 # n 表示分屏数,直接n等于文件个数 如果n小于文件,按顺序打开前面的n个,如果大于,打开空编辑页面 分屏快...

突突突酱
29分钟前
4
0
MySQL/Mariadb设置中文字符集(linux)

编辑/etc/my.cnf,添加以下设置 [mysql]default-character-set=utf8[mysqld]character_set_server=utf8[mysqld.safe]default-character-set=utf8[client]default-chara...

编程老陆
32分钟前
4
0
关于linux常用的挂载命令

挂载:就把一块磁盘(可以是光盘,U盘)绑定到一个空目录下面 一般情况下会挂载到mnt目录下面 挂载光盘(把光盘挂载到/mnt/cdrom这个目录中) mount -t iso9660 /dev/cdrom /mnt/cdrom 退出当前目录...

chenhongjiang
33分钟前
4
0
如何分享brain内容外部共享?几个需要知道的TheBrain问答

TheBrain(点击下载)是一款与众不同的思维导图软件,其所有信息通过一个又一个的节点进行联系,最终形成一个杂而不乱的网状结构。从头开始设计,让您捕获您的想法和信息在一个网络的联想,匹...

mnrssj
33分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部