SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――DataGrid機能(Silverlight前編)

(18) DataGridコントロール Silverlight前編

  • X ポスト
  • このエントリーをはてなブックマークに追加

04.データをクリップボードにコピーする方法を設定する

  DataGridに表示されているデータはクリップボードにコピーすることが可能です。クリップボードへのコピーを許可するには、ClipBoardCopyModeプロパティClipBoardCopyMode列挙体の値を設定します。

ClipBoardCopyMode列挙体
メンバー名 説明
None クリップボードへのコピーを許可しない
ExcludeHeader 選択したデータをクリップボードにコピーする。列ヘッダーは含まない
IncludeHeader 選択したデータをクリップボードにコピーする。列ヘッダーも含む

 下記は、選択されたデータをクリップボードにコピーする例です。ラジオボタン「コピーを許可しない」「列ヘッダーを含めずにコピーする」「列ヘッダーも含めてコピーする」の選択状態に合わせてコピーモードを変更します。

 DataGridでデータを選択してコピーを行うと「このアプリケーションがクリップボードにアクセスするのを許可しますか?」のメッセージが表示されます。コピーする場合は[はい]をクリックします。

クリップボードアクセスの許可
クリップボードアクセスの許可

  コピーを行い、Excelに貼り付けた例を下図に示します(この例はCustomerIDが3の行をクリップボードにコピーしています)。

データをクリップボードにコピーする例
データをクリップボードにコピーする例
XAMLの例
 <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>
VBの例
 ' クリップボードへのコピー方法変更時の処理
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
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;
    }
}
ポイント

 データをクリップボードにコピーする方法を設定にするにはClipBoardCopyModeプロパティを使用する。

05.列ヘッダー高さ/行ヘッダー幅を設定する

 列ヘッダー高さはColumnHeaderHeightプロパティ、行ヘッダー幅はRowHeaderWidthプロパティで設定することができます。

 また、列ヘッダーと行ヘッダーの表示方法を設定するにはHeadersVisibilityプロパティDataGridHeadersVisibility列挙体の値を設定します。

DataGridHeadersVisibility列挙体
メンバー名 説明
All 行ヘッダーと列ヘッダーの両方を表示する
Column 列ヘッダーのみを表示する
Row 行ヘッダーのみを表示する
None ヘッダーを表示しない

 下記は列ヘッダー高さと行ヘッダー幅を設定する例です。

 列ヘッダーを高くすることにより項目の名の上下にスペースを作っています。また、行ヘッダーは幅を広くすることで現在行を示す矢印が表示されています。

列ヘッダー高さと行ヘッダー幅を設定する例
列ヘッダー高さと行ヘッダー幅を設定する例
XAMLの例
 <sdk:DataGrid HeadersVisibility="All"
                      ColumnHeaderHeight="50" RowHeaderWidth="30">
 :省略
</sdk:DataGrid>

VBの例
 '行ヘッダーと列ヘッダーを表示する
CustomerDataGrid.HeadersVisibility = DataGridHeadersVisibility.All

'★★★列ヘッダー高さと行ヘッダー幅を設定する★★★
CustomerDataGrid.ColumnHeaderHeight = 50
CustomerDataGrid.RowHeaderWidth = 30
C#の例
 // 行ヘッダーと列ヘッダーの両方を表示する
customerDataGrid.HeadersVisibility = DataGridHeadersVisibility.All;

// ★★★列ヘッダー高さと行ヘッダー幅を設定する★★★
customerDataGrid.ColumnHeaderHeight = 50;
customerDataGrid.RowHeaderWidth = 30;
ポイント

  列ヘッダー高さを設定するにはColumnHeaderHeightプロパティを、行ヘッダー幅を設定するにはRowHeaderWidthプロパティを使用する。

次のページ
06.グリッド線の表示方法を設定する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6015 2011/07/06 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング