Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

DataControlBase.PastingFromClipboard Event

Occurs when some information is pasted from the clipboard to the grid.

Namespace: DevExpress.Xpf.Grid

Assembly: DevExpress.Xpf.Grid.v24.2.Core.dll

NuGet Package: DevExpress.Wpf.Grid.Core

#Declaration

public event PastingFromClipboardEventHandler PastingFromClipboard

#Event Data

The PastingFromClipboard event's data class is DevExpress.Xpf.Grid.PastingFromClipboardEventArgs.

#Remarks

GridControl provide two events that allow you to manually process clipboard operations.

  • The GridControl.CopyingToClipboard event is fired before row/cell values are copied to the clipboard by an end-user, or in code. To cancel default processing, set the event parameter’s Handled property to true. This event isn’t fired if the DataControlBase.ClipboardCopyMode property is set to None.
  • The PastingFromClipboard event is fired after an end-user has pressed Ctrl+V or Shift+Ins.

    Note

    GridControl raises the PastingFromClipboard event when the Ctrl+V key combination is pressed, no matter in what state other keyboard buttons are. This allows you to process additional pasting scenarios (e.g. pressing Ctrl+Shift+V) by checking the Keyboard.Modifiers property value.

To learn more, see Clipboard Management.

Note

The GridControl.CopyingToClipboard event raises only if the GridControl has no active cell editor. The PastingFromClipboard raises no matter whether the GridControl contains an active editor.

To detect whether the GridControl contains an active cell editor at runtime, use the DataViewBase.ActiveEditor property.

The following example processes clipboard data so a user can copy and paste a rectangular area from a source table to a grid:

<dxg:GridControl x:Name="gridControl" 
                 PastingFromClipboard="gridControl_PastingFromClipboard" 
                 AutoGenerateColumns="AddNew" 
                 ItemsSource="{Binding MyObjects}" 
                 SelectionMode="Cell">
    <!--...-->
</dxg:GridControl>
private void gridControl_PastingFromClipboard(object sender, DevExpress.Xpf.Grid.PastingFromClipboardEventArgs e) {
    int baseRowIndex = tableView.FocusedRowHandle;
    int baseColumnIndex = tableView.VisibleColumns.IndexOf(gridControl.CurrentColumn as GridColumn);
    string[] clipRows = Clipboard.GetText().Split('\n');
    int i = 0;
    foreach (var clipRow in clipRows) {
        string[] clipRowCells = clipRow.Split('\t');
        int j = 0;
        foreach (var clipRowCell in clipRowCells) {
            gridControl.SetCellValue(baseRowIndex + i, tableView.VisibleColumns[baseColumnIndex + j], clipRowCell.Replace("\r", ""));
            j++;
            if (baseColumnIndex + j > tableView.VisibleColumns.Count) break;
        }
        i++;
    }
    e.Handled = true;
}
See Also