DevExpress tableviewcell有关注CopyingToClipboard事件
本文关键字:CopyingToClipboard 事件 tableviewcell DevExpress | 更新日期: 2023-09-27 18:18:55
我正试图修复这个自定义的DevExpress表视图。正如你所猜测的,下面的方法处理CopyingToClipboard。当我cast FocusedElement时,它是一个BaseEdit,但不是我实际选择的那个。它的DisplayText是不同的。
我已经改变了单元格的背景颜色,以确保它有焦点,它是一个被选中的。这不是问题所在。你能分享一下你的智慧吗?
private void CustomizedTableView_CopyingToClipboard(object sender, CopyingToClipboardEventArgs e)
{
TableView view = sender as TableView;
if (view == null || view.Grid == null)
{
return;
}
BaseEdit edit = System.Windows.Input.Keyboard.FocusedElement as BaseEdit;
edit.Background = Brushes.Red;
VantageUtilities.SafeCopyToClipboard(DataFormats.Text, edit.DisplayText);
e.Handled = true;
}
您可以使用DataViewBase.ActiveEditor
属性来获得聚焦编辑器,也可以使用DataControlBase.CurrentCellValue
属性来获得聚焦值。
下面是示例:
private void CustomizedTableView_CopyingToClipboard(object sender, CopyingToClipboardEventArgs e)
{
TableView view = sender as TableView;
if (view == null || view.Grid == null)
return;
string text = null;
if (view.ActiveEditor != null)
text = view.ActiveEditor.DisplayText;
else
{
object value = view.Grid.CurrentCellValue;
if (value != null)
text = value.ToString();
}
if (text == null)
return;
VantageUtilities.SafeCopyToClipboard(DataFormats.Text, text);
e.Handled = true;
}
PS: DataControlBase
类中有几种CopySomethingToClipboard
方法:DataControlBase.CopyCurrentItemToClipboard
方法、DataControlBase.CopyRangeToClipboard
方法、DataControlBase.CopyRowsToClipboard
方法、DataControlBase.CopySelectedItemsToClipboard
方法和DataControlBase.CopyToClipboard
方法。你可以看一下