作成日: 2022/07/11 最終更新日: 2022/07/11
文書種別
使用方法
詳細
複数のFlexGridが存在する場合、あるC1FlexGridのCellStyleを別のC1FlexGridにも使用してExcelへ出力すると、"Invalid parent style (null or different context)"というエラーが発生します。
これを避けるには、2番目のC1FlexGridに対して、明示的に新規CellStyleを作成して適用してください。

(エラーが発生するコード)
◎サンプルコード(VB)
(回避方法)
C1FlexGrid2のセル範囲に対してC1FlexGrid1のスタイルを設定しているコードを、以下のように変更します。
◎サンプルコード(VB)
これを避けるには、2番目のC1FlexGridに対して、明示的に新規CellStyleを作成して適用してください。

(エラーが発生するコード)
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' C1FlexGrid1の設定
Dim cs1 As CellStyle = C1FlexGrid1.Styles.Add("Style1")
cs1.BackColor = Color.Green
Dim cr1 As CellRange
cr1 = C1FlexGrid1.GetCellRange(2, 1, 2, 1)
cr1.Style = C1FlexGrid1.Styles("Style1")
' C1FlexGrid2の設定
Dim cr2 As CellRange
cr2 = C1FlexGrid2.GetCellRange(2, 1, 2, 1)
cr2.Style = C1FlexGrid1.Styles("Style1") '現象発生の要因
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' C1FlexGrid2のExcel出力
C1FlexGrid2.SaveExcel("..\..\..\Test02.xlsx")
System.Diagnostics.Process.Start("..\..\..\Test02.xlsx")
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid_style
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// c1FlexGrid1の設定
CellStyle cs1 = c1FlexGrid1.Styles.Add("Style1");
cs1.BackColor = Color.Green;
CellRange cr1;
cr1 = c1FlexGrid1.GetCellRange(2, 1, 2, 1);
cr1.Style = c1FlexGrid1.Styles["Style1"];
// c1FlexGrid2の設定
CellRange cr2;
cr2 = c1FlexGrid2.GetCellRange(2, 1, 2, 1);
cr2.Style = c1FlexGrid1.Styles["Style1"]; //現象発生の要因
}
private void Button1_Click(object sender, EventArgs e)
{
// C1FlexGrid2のExcel出力
c1FlexGrid2.SaveExcel(@"..\..\..\Test02.xlsx");
System.Diagnostics.Process.Start(@"..\..\..\Test02.xlsx");
}
}
}
(回避方法)
C1FlexGrid2のセル範囲に対してC1FlexGrid1のスタイルを設定しているコードを、以下のように変更します。
◎サンプルコード(VB)
'cr2.Style = C1FlexGrid1.Styles("Style1") '現象発生の要因
' 回避方法
Dim cs2 As CellStyle = C1FlexGrid2.Styles.Add("Style2")
cs2.BackColor = Color.Green
cr2.Style = C1FlexGrid2.Styles("Style2")
◎サンプルコード(C#)
//cr2.Style = c1FlexGrid1.Styles["Style1"]; //現象発生の要因
// 回避方法
CellStyle cs2 = c1FlexGrid2.Styles.Add("Style2");
cs2.BackColor = Color.Green;
cr2.Style = c1FlexGrid2.Styles["Style2"];