windowsforms-devexpress-dot-xtratreelist-dot-treelist-15cecee7.md
Fires before a data row, a group row, column headers, or band headers are copied to the clipboard. Allows you to apply a format, change copied data, or skip a data row or header.
Namespace : DevExpress.XtraTreeList
Assembly : DevExpress.XtraTreeList.v25.2.dll
NuGet Packages : DevExpress.Win.Navigation, DevExpress.Win.TreeList
[DXCategory("Action")]
public event ClipboardNodeCopyingEventHandler ClipboardNodeCopying
<DXCategory("Action")>
Public Event ClipboardNodeCopying As ClipboardNodeCopyingEventHandler
The ClipboardNodeCopying event's data class is ClipboardNodeCopyingEventArgs. The following properties provide information specific to this event:
| Property | Description |
|---|---|
| Cancel | Gets or sets a value indicating whether the event should be canceled. Inherited from CancelEventArgs. |
| Headers | Provides access to the collection of cells in the processed column header, or band header. |
| NodeHandle | Gets the handle of the processed node. |
| Type | Gets the type of the processed row. |
| Values | Provides access to the collection of cells in the processed node. |
If the ClipboardMode option is set to Formatted, the ClipboardNodeCopying event fires before a node, column headers, or band headers are copied to the clipboard. You can handle this event to apply a format, change the copied data, or skip a data row or header.
Note
Run the DevExpress XtraTreeList demo to see how to copy and paste data.
The ClipboardNodeCopying event fires for each processed node and header. The Type event argument returns the processed row type:
Row — a tree list node.
ColumnHeader — column headers.
BandHeader — band headers.
To prevent the processed row from being copied, set the Cancel event argument to true.
Depending on the row type, use the following collections to access the processed cells:
You can index cells by column/band objects or by field names/band names. The returned object contains view information about the cell. You can specify the following properties:
Event arguments also provide the following extension methods that allow you to specify an action that accepts the processed row as a parameter:
Note
These extension methods are declared in the DevExpress.XtraTreeList.Printing namespace. Make sure you referenced this namespace in code.
The code below shows how to change a column header’s caption and appearance.
using DevExpress.XtraExport.Helpers;
using DevExpress.XtraTreeList;
using DevExpress.XtraTreeList.Columns;
private void TreeList1_ClipboardNodeCopying(object sender, ClipboardNodeCopyingEventArgs e) {
switch (e.Type) {
case ClipboardInfoType.ColumnHeader:
var salesHeaderInfo = e.Headers[colRegion];
var salesHeaderInfo1 = e.Headers["Region"];
if (salesHeaderInfo != null) {
salesHeaderInfo.BackColor = Color.Red;
salesHeaderInfo.ForeColor = Color.White;
salesHeaderInfo.BorderLeft = new ClipboardCellBorderInfo(Color.BlanchedAlmond, DevExpress.XtraExport.Helpers.BorderStyle.DashDotDot);
salesHeaderInfo.BorderTop = new ClipboardCellBorderInfo(Color.Crimson, DevExpress.XtraExport.Helpers.BorderStyle.DashDotDot);
salesHeaderInfo.BorderRight = new ClipboardCellBorderInfo(Color.CornflowerBlue, DevExpress.XtraExport.Helpers.BorderStyle.Dotted);
salesHeaderInfo.BorderBottom = new ClipboardCellBorderInfo(Color.Red, DevExpress.XtraExport.Helpers.BorderStyle.DashDot);
salesHeaderInfo.Value = "REGION";
}
break;
case ClipboardInfoType.BandHeader:
// The code does not copy band headers.
e.Cancel = true;
//var salesBandHeaderInfo = e.Headers[treeListBand1];
//var salesBandHeaderInfo1 = e.Headers["treeListBand1"];
break;
case ClipboardInfoType.Row:
//var regionCellInfo = e.Values[colRegion];
var regionCellInfo1 = e.Values["Region"];
if (regionCellInfo1.Value.Equals("France"))
e.Cancel = true;
break;
}
}
Imports DevExpress.XtraExport.Helpers
Imports DevExpress.XtraTreeList
Imports DevExpress.XtraTreeList.Columns
Private Sub treeList1_ClipboardNodeCopying(ByVal sender As Object, ByVal e As ClipboardNodeCopyingEventArgs) _
Handles treeList1.ClipboardNodeCopying
Select Case e.Type
Case ClipboardInfoType.ColumnHeader
Dim salesHeaderInfo = e.Headers(colRegion)
'var salesHeaderInfo1 = e.Headers["Region"];
If salesHeaderInfo IsNot Nothing Then
salesHeaderInfo.BackColor = Color.Red
salesHeaderInfo.ForeColor = Color.White
salesHeaderInfo.BorderLeft = New ClipboardCellBorderInfo(Color.BlanchedAlmond, DevExpress.XtraExport.Helpers.BorderStyle.DashDotDot)
salesHeaderInfo.BorderTop = New ClipboardCellBorderInfo(Color.Crimson, DevExpress.XtraExport.Helpers.BorderStyle.DashDotDot)
salesHeaderInfo.BorderRight = New ClipboardCellBorderInfo(Color.CornflowerBlue, DevExpress.XtraExport.Helpers.BorderStyle.Dotted)
salesHeaderInfo.BorderBottom = New ClipboardCellBorderInfo(Color.Red, DevExpress.XtraExport.Helpers.BorderStyle.DashDot)
salesHeaderInfo.Value = "REGION"
End If
Case ClipboardInfoType.BandHeader
' The code does not copy band headers.
e.Cancel = True
'var salesBandHeaderInfo = e.Headers[treeListBand1];
'var salesBandHeaderInfo1 = e.Headers["treeListBand1"];
Case ClipboardInfoType.Row
'var regionCellInfo = e.Values[colRegion];
Dim regionCellInfo1 = e.Values("Region")
If regionCellInfo1.Value.Equals("France") Then
e.Cancel = True
End If
End Select
End Sub
The code below shows how to use extension methods to access the processed cell values, column and band headers.
using DevExpress.XtraTreeList.Printing;
using DevExpress.XtraTreeList;
private void treeList1_ClipboardNodeCopying(object sender, ClipboardNodeCopyingEventArgs e) {
e.WithRow(dataRowValues => {
ClipboardValueInfo austriaValueInfo = dataRowValues.FirstOrDefault((valueInfo) => valueInfo.Value as string == "Austria");
if (austriaValueInfo != null)
austriaValueInfo.BackColor = Color.Red;
});
e.WithColumnHeader(columnHeaderRowValues => {
ClipboardHeaderInfo stateColumnHeaderInfo = columnHeaderRowValues.FirstOrDefault((columnHeaderInfo) => columnHeaderInfo.Column == colState);
if (stateColumnHeaderInfo != null)
stateColumnHeaderInfo.BackColor = Color.Red;
});
}
Imports DevExpress.XtraTreeList.Printing
Imports DevExpress.XtraTreeList
Private Sub treeList1_ClipboardNodeCopying(ByVal sender As Object, ByVal e As ClipboardNodeCopyingEventArgs) Handles treeList1.ClipboardNodeCopying
e.WithRow(Sub(dataRowValues)
Dim austriaValueInfo As ClipboardValueInfo = dataRowValues.FirstOrDefault(Function(valueInfo) TryCast(valueInfo.Value, String) = "Austria")
If austriaValueInfo IsNot Nothing Then
austriaValueInfo.BackColor = Color.Red
End If
End Sub)
e.WithColumnHeader(Sub(columnHeaderRowValues)
Dim stateColumnHeaderInfo As ClipboardHeaderInfo = columnHeaderRowValues.FirstOrDefault(Function(columnHeaderInfo) columnHeaderInfo.Column = colState)
If stateColumnHeaderInfo IsNot Nothing Then
stateColumnHeaderInfo.BackColor = Color.Red
End If
End Sub)
End Sub
See Also