DevExpress&WinForms-TreeList-获取选中行数据

TreeList - 获取选中行数据

在使用 TreeList 控件进行开发时,经常会遇到需要获取选中行数据的场景。本文将详细介绍通过不同事件获取 TreeList 选中行数据的方法,助力开发者高效实现数据获取需求。

SelectionChanging 事件 - 单击获取选中行数据

当 TreeList 的选中状态发生变化时,SelectionChanging事件会被触发。通过该事件,可以在用户单击节点时获取选中行的数据。以下是具体的代码实现:

private void treeList1_SelectionChanging(object sender, SelectionChangingEventArgs e)
{

   // 从事件参数中获取当前选择的节点,该节点即为用户单击操作所涉及的节点
   var node = e.Node;
   // 使用节点的GetValue方法获取指定索引位置的单元格数据,并转换为字符串类型,索引0代表第一列数据
   var value1 = node.GetValue(0)?.ToString();
   // 使用节点的GetValue方法获取指定列名对应的单元格数据,并转换为字符串类型,"ColumnName"为目标列的名称
   var value2 = node.GetValue("ColumnName")?.ToString();
}

在实际应用中,这种方式适用于用户每次单击节点后,都需要及时获取其相关数据进行后续处理的场景,比如展示节点详细信息等。

FocusedNode 和 FocusedColumn 获取单元格数据

除了通过事件获取选中行数据,还可以利用 TreeList 的FocusedNodeFocusedColumn属性来获取当前获得焦点的节点和列的数据。具体代码如下:

var tree = treeList1;
// 获取当前获得焦点的节点,该节点处于活动状态,用户的操作往往与该节点相关
var node = tree.FocusedNode;
// 使用节点的GetValue方法获取指定索引位置的单元格数据,并转换为字符串类型,索引0代表第一列数据
var value1 = node.GetValue(0)?.ToString();
// 使用节点的GetValue方法获取指定列名对应的单元格数据,并转换为字符串类型,"ColumnName"为目标列的名称
var value2 = node.GetValue("ColumnName")?.ToString();
// 获取当前获得焦点的列,通过该列属性可以进一步获取列相关信息
var column = tree.FocusedColumn;

这种方式常用于需要实时监控当前处于焦点状态的节点和列数据的情况,例如在表格编辑模式下,实时获取用户正在操作的单元格数据。

DoubleClick 事件 - 双击获取选中数据

当用户在 TreeList 上双击节点时,DoubleClick事件会被触发。通过该事件,可以获取双击节点的数据。具体实现代码如下:

private void treeList1_DoubleClick(object sender, EventArgs e)
{
   // 将事件发送者转换为TreeList类型,以便后续使用TreeList的相关方法和属性
   var tree = sender as TreeList;
   // 计算鼠标点击位置对应的TreeList命中信息,包括点击的节点、单元格等详细信息
   var hit = tree.CalcHitInfo(tree.PointToClient(MousePosition));
   // 判断命中信息中的节点是否为空,如果为空说明点击位置没有有效节点,直接返回
   if (hit.Node == null)
   {
       return;
   }

   // 从命中信息中获取双击的节点
   var node = hit.Node;
   // 使用节点的GetValue方法获取指定索引位置的单元格数据,并转换为字符串类型,索引0代表第一列数据
   var firstColumnValue = node.GetValue(0)?.ToString();
}

在实际项目中,双击获取数据的方式通常用于触发更详细的操作,比如打开节点对应的详细信息页面,或者进行复杂的数据编辑操作等。

通过以上三种不同的方式,开发者可以根据具体的业务需求灵活选择合适的方法来获取 TreeList 的选中行数据,提升开发效率和用户体验。

以上优化后的博客从多维度进行了完善,若你觉得某些部分还需调整,或者有其他优化需求,欢迎随时告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿蒙Armon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值