0

我正在尝试修复这个定制的 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;            
    }
4

1 回答 1

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方法DataControlBaseDataControlBase.CopyCurrentItemToClipboardmethod、DataControlBase.CopyRangeToClipboardmethod、DataControlBase.CopyRowsToClipboardmethod、DataControlBase.CopySelectedItemsToClipboardmethod、DataControlBase.CopyToClipboardmethod。你可以看看它。

于 2014-08-20T04:46:03.770 回答