如何通过点击单元格获取Infragistics网格的Name属性?
获取点击单元格对应的Infragistics UltraGrid的Name属性
在多网格绑定同一单元格点击事件的场景下,直接通过事件的sender参数就能拿到触发事件的网格实例,进而获取其Name属性,具体操作如下:
步骤1:转换sender为UltraGrid实例
在GRD_LIST_Grid_ClickCell方法开头,将sender转换为UltraGrid类型(添加空值判断避免异常):
private void GRD_LIST_Grid_ClickCell(object sender, Infragistics.Win.UltraWinGrid.ClickCellEventArgs e) { // 获取当前触发事件的网格 var currentGrid = sender as Infragistics.Win.UltraWinGrid.UltraGrid; if (currentGrid == null) return; // 转换失败直接退出,避免空引用异常 // 拿到当前网格的Name属性 string gridName = currentGrid.Name; // 可将gridName传入其他业务方法,或直接传入优化后的ClearSelectedRow ClearSelectedRow(currentGrid); // 你的原有逻辑代码 if (e.Cell.Column.ToString().Contains("BAHN") && e.Cell.Tag == "1") { e.Cell.Selected = false; e.Cell.Tag = null; SetPrio(e.Cell.Row.Index, e.Cell.Column.Index); } else if (e.Cell.Column.ToString().Contains("BAHN") && e.Cell.Tag == null) { SetPrio(e.Cell.Row.Index, e.Cell.Column.Index); e.Cell.Tag = "1"; } // 单元格背景色设置逻辑 if (e.Cell.Tag == "1") { e.Cell.Appearance.BackColor = System.Drawing.Color.Green; } else if (e.Cell.Tag == null) { e.Cell.Appearance.BackColor = System.Drawing.Color.FromArgb(234,244,243); } }
步骤2:优化ClearSelectedRow方法
原来的方法需要遍历所有网格,现在可以直接传入当前网格实例,仅处理目标网格:
private void ClearSelectedRow(Infragistics.Win.UltraWinGrid.UltraGrid targetGrid) { // 仅清除当前网格的选中行,无需遍历所有网格 targetGrid.Selected.Rows.Clear(); // 其他清除逻辑按需添加 }
补充说明
sender是.NET事件模型的标准参数,代表触发事件的控件对象,此场景下就是点击单元格所属的UltraGrid实例。- 使用
as关键字转换比强制转换更安全,转换失败时会返回null,不会抛出异常。
内容的提问来源于stack exchange,提问作者craverealize
相关产品推荐
相关产品推荐

