Dev在使用GridControl TreeList列表控件时,往往只有在编辑状态下才可以复制单元格内容。非编辑状态下该怎么通过快捷键复制呢?往下看:
·GridControl
private void gridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control & e.KeyCode == Keys.C)
{
Clipboard.SetDataObject(gridView1.GetFocusedRowCellValue(gridView1.FocusedColumn));
e.Handled = true;
}
}
·TreeList
private void treeList1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
TemEntity row = treeList1.GetDataRecordByNode(treeList1.FocusedNode) as TemEntity;
if (row == null) return;
switch (treeList1.FocusedColumn.FieldName)
{
case "Name":
Clipboard.SetDataObject(row.Name);
break;
case "Remark":
Clipboard.SetDataObject(row.Remark);
break;
}
e.Handled = true;
}
}
关于Clipboard和SetDataObject(object data),就是将数据对象临时的放到系统剪切板中。多说一句,SetDataObject还有其他的重载方法,有兴趣可以看下。
说明下TreeList为何要这么写,因为我不知道如何更简单的获取点击单元格的数据,只能通过将焦点行对象取出来,通过treelist的FocusedColumn属性的FieldName获取绑定数据源的具体字段,判定当前焦点在哪列获取对应的数据。
另外,这里我只简单展示了treelist两列:Name和Remark。
如果有知道如果更简单的获取treelist焦点单元格数据方法 的盆友,欢迎留言交流!