04.データをクリップボードにコピーする方法を設定する
DataGridに表示されているデータはクリップボードにコピーすることが可能です。クリップボードへのコピーを許可するには、ClipBoardCopyModeプロパティにClipBoardCopyMode列挙体の値を設定します。
メンバー名 | 説明 |
None | クリップボードへのコピーを許可しない |
ExcludeHeader | 選択したデータをクリップボードにコピーする。列ヘッダーは含まない |
IncludeHeader | 選択したデータをクリップボードにコピーする。列ヘッダーも含む |
下記は、選択されたデータをクリップボードにコピーする例です。ラジオボタン「コピーを許可しない」「列ヘッダーを含めずにコピーする」「列ヘッダーも含めてコピーする」の選択状態に合わせてコピーモードを変更します。
DataGridでデータを選択してコピーを行うと「このアプリケーションがクリップボードにアクセスするのを許可しますか?」のメッセージが表示されます。コピーする場合は[はい]をクリックします。
コピーを行い、Excelに貼り付けた例を下図に示します(この例はCustomerIDが3の行をクリップボードにコピーしています)。
<sdk:Label Content="クリップボードへのコピー方法" FontSize="12" /> <Border BorderBrush="Silver" BorderThickness="2" CornerRadius="5"> <StackPanel Orientation="Horizontal" Margin="5"> <RadioButton Content="コピーを許可しない" Name="rdoNone" /> <RadioButton Content="列ヘッダーを含めずにコピーする" Name="rdoExcludeHeader"/> <RadioButton Content="列ヘッダーも含めてコピーする" Name="rdoIncludeHeader"/> </StackPanel> </Border> <sdk:DataGrid ClipboardCopyMode="None"> :省略 </sdk:DataGrid>
' クリップボードへのコピー方法変更時の処理 Private Sub rdoCopy_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles rdoIncludeHeader.Checked, rdoExcludeHeader.Checked, rdoNone.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
// クリップボードへのコピー方法変更時の処理 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; } }
データをクリップボードにコピーする方法を設定にするにはClipBoardCopyModeプロパティを使用する。
05.列ヘッダー高さ/行ヘッダー幅を設定する
列ヘッダー高さはColumnHeaderHeightプロパティ、行ヘッダー幅はRowHeaderWidthプロパティで設定することができます。
また、列ヘッダーと行ヘッダーの表示方法を設定するにはHeadersVisibilityプロパティにDataGridHeadersVisibility列挙体の値を設定します。
メンバー名 | 説明 |
All | 行ヘッダーと列ヘッダーの両方を表示する |
Column | 列ヘッダーのみを表示する |
Row | 行ヘッダーのみを表示する |
None | ヘッダーを表示しない |
下記は列ヘッダー高さと行ヘッダー幅を設定する例です。
列ヘッダーを高くすることにより項目の名の上下にスペースを作っています。また、行ヘッダーは幅を広くすることで現在行を示す矢印が表示されています。
<sdk:DataGrid HeadersVisibility="All" ColumnHeaderHeight="50" RowHeaderWidth="30"> :省略 </sdk:DataGrid>
'行ヘッダーと列ヘッダーを表示する CustomerDataGrid.HeadersVisibility = DataGridHeadersVisibility.All '★★★列ヘッダー高さと行ヘッダー幅を設定する★★★ CustomerDataGrid.ColumnHeaderHeight = 50 CustomerDataGrid.RowHeaderWidth = 30
// 行ヘッダーと列ヘッダーの両方を表示する customerDataGrid.HeadersVisibility = DataGridHeadersVisibility.All; // ★★★列ヘッダー高さと行ヘッダー幅を設定する★★★ customerDataGrid.ColumnHeaderHeight = 50; customerDataGrid.RowHeaderWidth = 30;
列ヘッダー高さを設定するにはColumnHeaderHeightプロパティを、行ヘッダー幅を設定するにはRowHeaderWidthプロパティを使用する。