バインディングソースを介してdatagridviewをdatatableにバインドするコードがあります。
_bind.DataSource = Table;
lGrid.DataSource = _bind;
DataBindingCompleteイベントで、いくつかの列にDefaultCellStyleを設定しました。
void lGrid_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
if (e.ListChangedType == ListChangedType.Reset)
lGrid.Columns[0].DefaultCellStyle.Format = "+#,##0;-#,##0;0";
}
この時点では、テーブルはまだ空です。したがって、後で行がテーブルに追加され、DataGridViewに適切に反映されると、何らかの理由で、フォーマットが列0のセルに適用されません。
CellFormattingイベント内のフォーマットを確認しました。
private void lGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs args)
{
if (args.ColumnIndex == lGrid.Columns[0].Index)
{
string s1 = lGrid.Columns[0].DefaultCellStyle.Format;
string s2 = lGrid[0, args.RowIndex].Style.Format;
}
}
s1は正しい形式を返しますが、s2は単なる空の文字列です。
私が間違っていることと、セルをフォーマットする方法を教えてください。ありがとう!