SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

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

(16) DataGridコントロール WPF前編

05.列の順序を変更できるかどうかを設定する

 列の順序の変更を許可するにはCanUserReorderColumnsプロパティにTrueを設定します。

 列の順序の変更が許可されているときは、任意の列をドラッグして入れ替えを行うことが可能です。

 下記は、列の順序を変更できるかどうかを設定する例です。

 [列の順序の変更を許可]にチェックが付けられているときは、ドラッグして列を入れ替えることが可能です。

列の順序を変更できるかどうかを設定する例
列の順序を変更できるかどうかを設定する例
XAMLの例
<DataGrid CanUserReorderColumns="True">
:省略
</DataGrid>
VBの例
' [列の順序の変更を許可]チェッック時の処理
Private Sub chkReorderColumns_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles chkReorderColumns.Checked
    '★★★列の順序の変更を許可する★★★
    CustomerDataGrid.CanUserReorderColumns = True
End Sub

' [列の順序の変更を許可]未チェッック時の処理
Private Sub chkReorderColumns_Unchecked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles chkReorderColumns.Unchecked
    '★★★列の順序の変更を許可しない★★★
    CustomerDataGrid.CanUserReorderColumns = False
End Sub
C#の例
// [列の順序の変更を許可]チェッック時の処理
private void chkReorderColumns_Checked(object sender, RoutedEventArgs e)
{
    // ★★★列の順序の変更を許可する★★★
    customerDataGrid.CanUserReorderColumns = true;
}

// [列の順序の変更を許可]未チェッック時の処理
private void chkReorderColumns_Unchecked(object sender, RoutedEventArgs e)
{
    // ★★★列の順序の変更を許可しない★★★
    customerDataGrid.CanUserReorderColumns = false;
}
ポイント

 列の順序の変更を許可するにはCanUserReorderColumnsプロパティにTrueを設定する。

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

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

ポイント

 データをクリップボードにコピーできるようにするにはClipBoardCopyModeプロパティを使用する。

次のページ
07.列ヘッダー高さ/行ヘッダー幅を設定する

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

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6005 2011/06/27 14:00

イベント

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

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

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

メールバックナンバー