作成日: 2022/05/24 最終更新日: 2025/05/16
文書種別
不具合
状況
修正済み
詳細
列バンド使用時に各列の名称でスタイル(AllowEditing、Width、TextAlignなどのプロパティ)を設定しても有効になりません。
また、列インデックスを指定して各プロパティを設定した場合においても、列バンドの形によっては、上位の列の設定が参照されて希望どおりの動作とならない場合があります。
また、列インデックスを指定して各プロパティを設定した場合においても、列バンドの形によっては、上位の列の設定が参照されて希望どおりの動作とならない場合があります。
回避方法
この問題は2024J v2.1(4.8.20242.700)で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
各プロパティについて、以下の方法にて回避が可能です。
(1)AllowEditing
BeforeEditイベントを追加し、列を判断して編集操作をキャンセルします。
◎サンプルコード(C#)
(2)Width
列インデックスを指定して設定します。
◎サンプルコード(C#)
(3)TextAlign
OwnerDrawCellイベントを追加し、列のスタイルを設定します。
◎サンプルコード(C#)
※修正版を適用しない場合の回避方法は以下の通りです。
各プロパティについて、以下の方法にて回避が可能です。
(1)AllowEditing
BeforeEditイベントを追加し、列を判断して編集操作をキャンセルします。
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Cols["A"].AllowEditing = false;
c1FlexGrid1.Cols["B"].AllowEditing = true;
c1FlexGrid1.Cols["C"].AllowEditing = true;
c1FlexGrid1.Cols["D"].AllowEditing = true;
c1FlexGrid1.Cols["E"].AllowEditing = false;
}
private void C1FlexGrid1_BeforeEdit(object sender, RowColEventArgs e)
{
string fieldName = ((IFlexDataGrid)c1FlexGrid1).GetFieldNameByPos(e.Row, e.Col);
if (string.IsNullOrEmpty(fieldName))
return;
if (fieldName == "A" || fieldName == "E")
e.Cancel = true;
}
(2)Width
列インデックスを指定して設定します。
◎サンプルコード(C#)
c1FlexGrid1.Cols[1].Width = 50;
c1FlexGrid1.Cols[2].Width = 100;
c1FlexGrid1.Cols[3].Width = 150;
c1FlexGrid1.Cols[4].Width = 200;
c1FlexGrid1.Cols[5].Width = 250;
(3)TextAlign
OwnerDrawCellイベントを追加し、列のスタイルを設定します。
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Cols["A"].TextAlign = TextAlignEnum.CenterCenter;
c1FlexGrid1.Cols["B"].TextAlign = TextAlignEnum.LeftCenter;
c1FlexGrid1.Cols["C"].TextAlign = TextAlignEnum.CenterBottom;
c1FlexGrid1.Cols["D"].TextAlign = TextAlignEnum.RightCenter;
c1FlexGrid1.Cols["E"].TextAlign = TextAlignEnum.CenterCenter;
c1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw;
}
private void C1FlexGrid1_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
{
string fieldName = ((IFlexDataGrid)c1FlexGrid1).GetFieldNameByPos(e.Row, e.Col);
if (string.IsNullOrEmpty(fieldName))
return;
switch (fieldName)
{
case "A":
e.Style = c1FlexGrid1.Cols["A"].Style;
break;
case "B":
e.Style = c1FlexGrid1.Cols["B"].Style;
break;
case "C":
e.Style = c1FlexGrid1.Cols["C"].Style;
break;
case "D":
e.Style = c1FlexGrid1.Cols["D"].Style;
break;
case "E":
e.Style = c1FlexGrid1.Cols["E"].Style;
break;
default:
break;
}
}