DataGridに表示されているデータはクリップボードにコピーすることが可能です。
クリップボードにコピーするには、ClipBoardCopyModeプロパティにClipBoardCopyMode列挙体の値を設定します。
ClipBoardCopyMode列挙体 メンバ名説明 None クリップボードへのコピーを許可しない ExcludeHeader 選択したデータをクリップボードにコピーする。列ヘッダーは含まない。 IncludeHeader 選択したデータをクリップボードにコピーする。列ヘッダーも含む。
下記は、選択されたデータをクリップボードにコピーする例です。
ラジオボタン「コピーを許可しない」「列ヘッダーを含めずにコピーする」「列ヘッダーも含めてコピーする」の選択状態に合わせてコピーモードを変更します。
XAMLの例
<GroupBox Header="クリップボードへのコピー方法">
<Grid>
<RadioButton Content="コピーを許可しない" Name="rdoNone" />
<RadioButton Content="列ヘッダーを含めずにコピーする" Name="rdoExcludeHeader" />
<RadioButton Content="列ヘッダーも含めてコピーする" Name="rdoIncludeHeader" />
</Grid>
</GroupBox>
<DataGrid ClipboardCopyMode="None">
:省略
</DataGrid>
VBの例
' クリップボードへのコピー方法変更時の処理
Private Sub rdoCopy_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles rdoNone.Checked, rdoExcludeHeader.Checked, rdoIncludeHeader.Checked
If rdoNone.IsChecked Then
'★★★コピーを許可しない★★★
CustomerDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.None
ElseIf rdoExcludeHeader.IsChecked Then
'★★★ヘッダーを含めないでコピーする★★★
CustomerDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.ExcludeHeader
ElseIf rdoIncludeHeader.IsChecked Then
'★★★ヘッダーを含めてコピーする★★★
CustomerDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader
End If
End Sub
C#の例
// クリップボードへのコピー方法変更時の処理
private void rdoCopy_Checked(object sender, RoutedEventArgs e)
{
if ((bool)rdoNone.IsChecked)
// ★★★コピーを許可しない★★★
customerDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.None;
else if ((bool)rdoExcludeHeader.IsChecked)
// ★★★ヘッダーを含めないでコピーする★★★
customerDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.ExcludeHeader;
else if ((bool)rdoIncludeHeader.IsChecked)
// ★★★ヘッダーを含めてコピーする★★★
customerDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
}
