我正在尝试修复这个自定义的DevExpress TableView。正如您猜测以下方法处理CopyingToClipboard。当我投射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;
}
答案 0 :(得分:1)
您可以使用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:CopySomethingToClipboard
类中有DataControlBase
个方法:DataControlBase.CopyCurrentItemToClipboard
方法,DataControlBase.CopyRangeToClipboard
方法,DataControlBase.CopyRowsToClipboard
方法,DataControlBase.CopySelectedItemsToClipboard
方法和DataControlBase.CopyToClipboard
方法。你可以看看它。