作成日: 2014/04/25 最終更新日: 2014/04/25
文書種別
制限事項
詳細
CellChangedイベントで、DataTypeプロパティに数値を設定し、Formatプロパティを設定したCellStyleを適用すると、セルを編集して確定したときに、書式が反映されません。編集後にセルを移動し、再度同じセルを編集モードにしてからセル移動すると、書式が反映されて表示されます。
これは仕様上の動作です。
CellChangedイベントでセルのデータ型を変更する場合は、それに合わせて、入力されたデータを明示的に文字列型から数値型に変換する必要があります。
これは仕様上の動作です。
CellChangedイベントでセルのデータ型を変更する場合は、それに合わせて、入力されたデータを明示的に文字列型から数値型に変換する必要があります。
回避方法
下記のような例の場合、コメントようなコード処理が必要です。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.Styles.Add("Num")
C1FlexGrid1.Styles("Num").BackColor = System.Drawing.Color.Cyan
C1FlexGrid1.Styles("Num").ForeColor = System.Drawing.Color.Blue
C1FlexGrid1.Styles("Num").DataType = GetType(Double)
C1FlexGrid1.Styles("Num").Format = "#,##0"
End Sub
Private Sub C1FlexGrid1_CellChanged(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.CellChanged
C1FlexGrid1.SetCellStyle(e.Row, e.Col, "Num")
' 以下のようなコードが必要です
C1FlexGrid1(e.Row, e.Col) = Double.Parse(C1FlexGrid1(e.Row, e.Col).ToString(), System.Globalization.NumberStyles.Any)
End Sub
C1FlexGrid1.Styles.Add("Num")
C1FlexGrid1.Styles("Num").BackColor = System.Drawing.Color.Cyan
C1FlexGrid1.Styles("Num").ForeColor = System.Drawing.Color.Blue
C1FlexGrid1.Styles("Num").DataType = GetType(Double)
C1FlexGrid1.Styles("Num").Format = "#,##0"
End Sub
Private Sub C1FlexGrid1_CellChanged(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.CellChanged
C1FlexGrid1.SetCellStyle(e.Row, e.Col, "Num")
' 以下のようなコードが必要です
C1FlexGrid1(e.Row, e.Col) = Double.Parse(C1FlexGrid1(e.Row, e.Col).ToString(), System.Globalization.NumberStyles.Any)
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Styles.Add("Num");
c1FlexGrid1.Styles["Num"].BackColor = System.Drawing.Color.Cyan;
c1FlexGrid1.Styles["Num"].ForeColor = System.Drawing.Color.Blue;
c1FlexGrid1.Styles["Num"].DataType = typeof(double);
c1FlexGrid1.Styles["Num"].Format = "#,##0";
}
private void c1FlexGrid1_CellChanged(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
c1FlexGrid1.SetCellStyle(e.Row, e.Col, "Num");
// 以下のようなコードが必要です
c1FlexGrid1[e.Row, e.Col] = double.Parse(c1FlexGrid1[e.Row, e.Col].ToString(), System.Globalization.NumberStyles.Any);
}
{
c1FlexGrid1.Styles.Add("Num");
c1FlexGrid1.Styles["Num"].BackColor = System.Drawing.Color.Cyan;
c1FlexGrid1.Styles["Num"].ForeColor = System.Drawing.Color.Blue;
c1FlexGrid1.Styles["Num"].DataType = typeof(double);
c1FlexGrid1.Styles["Num"].Format = "#,##0";
}
private void c1FlexGrid1_CellChanged(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
c1FlexGrid1.SetCellStyle(e.Row, e.Col, "Num");
// 以下のようなコードが必要です
c1FlexGrid1[e.Row, e.Col] = double.Parse(c1FlexGrid1[e.Row, e.Col].ToString(), System.Globalization.NumberStyles.Any);
}
旧文書番号
80793