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; }