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焦點單元格數據方法 的盆友,歡迎留言交流!