結合および自動マージされるセルがあるときに列を追加すると例外が発生する

文書番号 : 39456     文書種別 : 不具合     登録日 : 2016/07/07     最終更新日 : 2016/12/07
文書を印刷する
対象製品
SPREAD for WPF 1.0J
状況
修正済み
詳細
セルの結合および列の自動マージの両方が実行されているとき、結合されたセルを含む列の前に列を挿入すると例外が発生します。

【手順】
1. 新規プロジェクトにSPREADとButtonコントロールを配置します。
2. SPREADを次のように設定し、セル結合と自動マージを実装します。
◎サンプルコード(VB)
For i As Integer = 0 To gcSpreadGrid1.RowCount - 1
  GcSpreadGrid1.SetCellValue(i, 0, "A")
Next
GcSpreadGrid1(0, 0).ColumnSpan = 2
GcSpreadGrid1.Columns(0).MergePolicy = MergePolicy.Always

◎サンプルコード(C#)
for(int i = 0; i < gcSpreadGrid1.RowCount; i++)
{
  gcSpreadGrid1.SetCellValue(i, 0, "A");
}
gcSpreadGrid1[0, 0].ColumnSpan = 2;
gcSpreadGrid1.Columns[0].MergePolicy = MergePolicy.Always;

3. ButtonコントロールのClickイベントで列を挿入します。
◎サンプルコード(VB)
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
  GcSpreadGrid1.Columns.Insert(1)
End Sub

◎サンプルコード(C#)
private void Button_Click(object sender, RoutedEventArgs e)
{
  gcSpreadGrid1.Columns.Insert(1);
}

4. プロジェクトを実行しボタンを押下すると例外が発生します。

回避方法
Service Pack 3(v1.0.2016.1207)で修正済みです。
Service Pack 3(v1.0.2016.1207)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

Insertメソッドを実行する前に、自動マージをNoneに設定します。Insertメソッド実行後に元に戻します。
◎サンプルコード(VB)
GcSpreadGrid1.Columns(0).MergePolicy = MergePolicy.None
GcSpreadGrid1.Columns.Insert(1)
GcSpreadGrid1.Columns(0).MergePolicy = MergePolicy.Always

◎サンプルコード(C#)
gcSpreadGrid1.Columns[0].MergePolicy = MergePolicy.None;
gcSpreadGrid1.Columns.Insert(1);
gcSpreadGrid1.Columns[0].MergePolicy = MergePolicy.Always;