このコントロールは廃止されたため、XamDataGrid コントロールに移行することをお勧めします。今後、新機能、バグ修正、サポートは提供されません。コードベースの XamDataGrid への移行に関する質問は、サポートまでお問い合わせください。
このトピックでは、エンド ユーザーが選択したセルを Microsoft® Excel® ワークシートに正しく貼り付けることができるかどうかを検証する方法を説明します。長方形のセル選択のみが、有効な領域として承認されます。
以下の表に、このトピックを理解するための前提条件として求められるトピックをリストします。
Excel 文書では、長方形の領域を形成しない複数のデータ セルを選択し、それらをコピーしようとすると、その操作が不可能であることを示すメッセージが表示されます。コピーのための唯一の有効なセル選択における長方形の選択。
xamGrid コントロールでは、コピー/貼り付けを行うセルの選択を確認できます。これを行うには、 ClipboardCopyingEventArgs オブジェクトの ValidateSelectedRectangle メソッドを使用します。
以下の手順は、セル選択の確認方法を示しています。セル選択が有効でない場合、選択したセルは赤で示されます。領域が長方形ではないためコピー操作がキャンセルされることを示すメッセージが表示されます。
以下のスクリーンショットは最終結果のプレビューです。
手順を実行するには、サンプル データ ソースとして提供された DataUtil クラスをプロジェクトに含める必要があります。
このトピックは、xamGrid コントロール内の長方形のセル選択の検証方法について、ステップごとに説明します。以下はプロセスの概念的概要です。
以下のステップは、長方形領域の検証方法を示します。
xamGrid コントロールをアプリケーションに追加し、データ ソースにバインドします。長方形のセル選択の検証は、ClipboardCopying イベント ハンドラ内で実行されます。
XAML の場合:
<ig:XamGrid x:Name="dataGrid"
ClipboardCopying="dataGrid_ClipboardCopying">
<!-- ここにさらにコードを追加します -->
</ig:XamGrid>
エンド ユーザーが複数のセル コンテンツをコピーできるように、選択したセルに対して xamGrid のコピー機能を有効にします。
XAML の場合:
<ig:XamGrid.ClipboardSettings>
<ig:ClipboardSettings AllowCopy="True"
CopyOptions="ExcludeHeaders"
CopyType="SelectedCells"
AllowPaste="True"/>
</ig:XamGrid.ClipboardSettings>
複数のセル選択を xamGrid 内で有効にすると、エンド ユーザーはコピーするセルを選択できるようになります。
XAML の場合:
<ig:XamGrid.SelectionSettings>
<ig:SelectionSettings
CellClickAction="SelectCell"
CellSelection="Multiple" />
</ig:XamGrid.SelectionSettings>
作成された Style は、セルの前景と境界線の色を赤にし、セルのテキストを太字フォントに設定します。このようにして、エンド ユーザーは、無効な選択に含まれたセルが分かります。
XAML の場合:
<Style x:Key="InvalidSelectionCellStyle"
TargetType="ig:CellControl">
<Setter Property="Foreground" Value="#FFc62d36" />
<Setter Property="BorderBrush" Value="#FFc62d36" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
セルの選択が有効な場合、確認が行われます。選択が長方形ではない場合、選択したセルは赤で示され、メッセージが表示されます。コピー イベントはキャンセルされます。
C# の場合:
private void dataGrid_ClipboardCopying(object sender, ClipboardCopyingEventArgs e)
{
// 選択したセル領域が貼り付けに有効かどうかを確認します
bool isValidSelection = e.ValidateSelectedRectangle();
if (!isValidSelection)
{
foreach (CellBase cell in e.SelectedItems)
{
// 新しいスタイルをコピーされるセルに設定します
cell.Style = this.LayoutRoot.Resources["InvalidSelectionCellStyle"] as Style;
}
// 選択したセル領域が長方形以外の場合はコピー イベントをキャンセルします
e.Cancel = true;
MessageBox.Show("Selected cell region is not valid for pasting.");
}
}
Visual Basic の場合:
Private Sub dataGrid_ClipboardCopying(sender As System.Object, e As Infragistics.Controls.Grids.ClipboardCopyingEventArgs)
' 選択したセル領域が貼り付けに有効かどうかを確認します
Dim isValidSelection As Boolean = e.ValidateSelectedRectangle()
If Not isValidSelection Then
For Each cell As CellBase In e.SelectedItems
' 新しいスタイルをコピーされるセルに設定します
cell.Style = TryCast(Me.LayoutRoot.Resources("InvalidSelectionCellStyle"), Style)
Next
' 選択したセル領域が長方形以外の場合はコピー イベントをキャンセルします
e.Cancel = True
End If
MessageBox.Show("Selected cell region is not valid for pasting.")
End Sub
以下のトピックでは、このトピックに関連する情報を提供しています。