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.CopyCurrentItemToClipboardDataControlBase.CopyRangeToClipboardDataControlBase.CopyRowsToClipboardDataControlBase.CopySelectedItemsToClipboardDataControlBase.CopyToClipboard

于 2014-08-20T04:46:03.770 に答える