このコントロールは廃止されたため、XamDataGrid コントロールに移行することをお勧めします。今後、新機能、バグ修正、サポートは提供されません。コードベースの XamDataGrid への移行に関する質問は、サポートまでお問い合わせください。
このトピックでは、xamGrid™ コントロールでコピーされたデータを貼り付ける方法、およびデータの貼り付け中に発生するエラーの処理方法について説明します。
以下の表に、このトピックを理解するための前提条件として求められるトピックをリストします。
この手順では、クリップボードのデータが xamGrid コントロール内でどのように貼り付けられるのかを示します。エラーが発生すると通知ダイアログが表示され、エンド ユーザーは進め方を決定できます。
以下の例では、貼り付けヘルパー メソッド PasteAsExcel および ClipboardPasteError イベントを使用しています。これらは Ultimate UI for WPF 2012 Volume 1 リリースで導入された機能です。
以下のスクリーンショットは最終結果のプレビューです。
手順を実行するには、サンプル データ ソースとして提供された DataUtil クラスをプロジェクトに含める必要があります。
このトピックでは、xamGrid でデータを貼り付け、また貼り付けエラーを処理する方法を、ステップごとに説明します。以下はプロセスの概念的概要です。
以下の手順では、貼り付けヘルパー メソッド PasteAsExcel の使用方法および ClipboardPasteError イベントの処理方法を示します。
xamGrid コントロールをアプリケーションに追加し、データ ソースにバインドします。
ClipboardPasting
および ClipboardPasteError
イベントのハンドラを追加します。
XAML の場合:
<ig:XamGrid x:Name="dataGrid"
ClipboardPasting="dataGrid_ClipboardPasting"
ClipboardPasteError="dataGrid_ClipboardPasteError">
<!-- ここにさらにコードを追加します -->
</ig:XamGrid>
xamGrid コピーと貼り付け機能を有効にします。
XAML の場合:
<ig:XamGrid.ClipboardSettings>
<ig:ClipboardSettings AllowCopy="True"
CopyOptions="ExcludeHeaders"
CopyType="SelectedCells"
AllowPaste="True"/>
</ig:XamGrid.ClipboardSettings>
複数セル選択を xamGrid で有効にできます。これによって、エンド ユーザーはコピーする xamGrid セルをその中で選択することができます。
XAML の場合:
<ig:XamGrid.SelectionSettings>
<ig:SelectionSettings
CellClickAction="SelectCell"
CellSelection="Multiple" />
</ig:XamGrid.SelectionSettings>
PasteAsExcel
メソッドを使用して、xamGrid 内で貼り付けを実行します。xamGrid または Excel セルの内容を貼り付けることができます。
C# の場合:
private void dataGrid_ClipboardPasting(object sender, Infragistics.Controls.Grids.ClipboardPastingEventArgs e)
{
// xamGrid のセルの四角形選択を貼り付けます
e.PasteAsExcel();
}
Visual Basic の場合:
Private Sub dataGrid_ClipboardPasting(sender As Object, e As Infragistics.Controls.Grids.ClipboardPastingEventArgs)
' xamGrid のセルの四角形選択を貼り付けます
e.PasteAsExcel()
End Sub
ClipboardPasteError
ハンドラーでエラー タイプが確認され、エラーが回復可能な場合は、貼り付けを続行できます。
エラーが回復可能な場合は確認ダイアログが表示され、エンド ユーザーは、エラーの発生に関係なく貼り付けを続行するかどうかを決定します。
C# の場合:
private void dataGrid_ClipboardPasteError(object sender, Infragistics.Controls.Grids.ClipboardPasteErrorEventArgs e)
{
// 貼り付けエラーのタイプを取得します
string strErrorType = e.ErrorType.ToString();
// 貼り付けがエラーの後に続行できるかを確認します
bool isRecoverableError = e.IsRecoverable;
if (isRecoverableError)
{
MessageBoxButton button = MessageBoxButton.OKCancel;
string errorMsg = string.Format("An error occured during the paste process of type {0}", strErrorType);
string questionMsg = "Do you want to continue?";
MessageBoxResult result = MessageBox.Show(errorMsg + "\n" + questionMsg, "Error Dialog", button);
switch (result)
{
case MessageBoxResult.OK:
e.AttemptRecover = true;
break;
case MessageBoxResult.Cancel:
e.AttemptRecover = false;
break;
}
}
}
Visual Basic の場合:
Private Sub dataGrid_ClipboardPasteError(sender As Object, e As Infragistics.Controls.Grids.ClipboardPasteErrorEventArgs)
' 貼り付けエラーのタイプを取得します
Dim strErrorType As String = e.ErrorType.ToString()
' 貼り付けがエラーの後に続行できるかを確認します
Dim isRecoverableError As Boolean = e.IsRecoverable
If isRecoverableError Then
Dim button As MessageBoxButton = MessageBoxButton.OKCancel
Dim errorMsg As String = String.Format("An error occured during the paste process of type {0}", strErrorType)
Dim questionMsg As String = "Do you want to continue?"
Dim result As MessageBoxResult = MessageBox.Show(errorMsg & vbLf & questionMsg, "Error Dialog", button)
Select Case result
Case MessageBoxResult.OK
e.AttemptRecover = True
Exit Select
Case MessageBoxResult.Cancel
e.AttemptRecover = False
Exit Select
End Select
End If
End Sub
以下のトピックでは、このトピックに関連する情報を提供しています。