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;            
    }

DevExpress tableviewcell有关注CopyingToClipboard事件

您可以使用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方法。你可以看一下

相关文章:
  • 没有找到相关文章