作成日: 2023/01/17 最終更新日: 2022/01/17
文書種別
使用方法
詳細
行選択モードで、選択行の背景色を設定するためのいろいろな方法を紹介します。
行選択モードの設定コード:
◎サンプルコード(VB)
(1)組み込みのビジュアルスタイルを利用する
FlexGridには組み込みのビジュアルスタイルが用意されており、どれを設定するかによって選択行の背景色も変化します。
組み込みのビジュアルスタイルの種類
Office2007 Black/Office2007 Blue/Office2007 Silver/Office2010 Black/Office2010 Blue/Office2010 Silver/System
ビジュアルスタイルの設定例(Office2010Blue):

◎サンプルコード(VB)
(2)組み込みのスタイルコレクションを利用する
通常セル/固定セル/フォーカスセルなどそれぞれに対して外観を変更するため、組み込みのスタイルコレクションが提供されています。これを用いて行の各パートの背景色を変更できます。
例えば、選択行全体(行ヘッダ、通常セル、選択セル)を同じ背景色にするには、SelectedRowHeader、Highlight、Focusの各組み込みスタイルに対して、BackColorをすべて同じ色に設定します。

◎サンプルコード(VB)
(3)カスタムスタイルを設定する
カスタムスタイルを作成し、OwnerDrawCellイベント内で選択行(=カレント行)のセルかどうかを調べ、一致すればこのスタイルを適用することで、選択行の背景色を変更します。
メモ:
SelectionMode=Rowの場合、Row.Selectedプロパティ※では行の選択状態を判別できないため、C1FlexGridのSelectionプロパティで選択範囲を取得し、行番号がその r1 プロパティと一致するかどうかで選択行のセルであることを判断しています。
※SelectionMode=ListBoxの場合のみ、選択状態を取得可能。詳細は製品ヘルプの「Selected プロパティ (Row)」の項を参照してください。
以下のコードでは、背景色をColor.Azureに設定したカスタムスタイルを作成して行に適用しています。

◎サンプルコード(VB)
行選択モードの設定コード:
◎サンプルコード(VB)
C1FlexGrid1.SelectionMode = SelectionModeEnum.Row
◎サンプルコード(C#)
c1FlexGrid1.SelectionMode = SelectionModeEnum.Row;
(1)組み込みのビジュアルスタイルを利用する
FlexGridには組み込みのビジュアルスタイルが用意されており、どれを設定するかによって選択行の背景色も変化します。
組み込みのビジュアルスタイルの種類
Office2007 Black/Office2007 Blue/Office2007 Silver/Office2010 Black/Office2010 Blue/Office2010 Silver/System
ビジュアルスタイルの設定例(Office2010Blue):
◎サンプルコード(VB)
C1FlexGrid1.VisualStyle = VisualStyle.Office2010Blue
◎サンプルコード(C#)
c1FlexGrid1.VisualStyle = VisualStyle.Office2010Blue;
(2)組み込みのスタイルコレクションを利用する
通常セル/固定セル/フォーカスセルなどそれぞれに対して外観を変更するため、組み込みのスタイルコレクションが提供されています。これを用いて行の各パートの背景色を変更できます。
例えば、選択行全体(行ヘッダ、通常セル、選択セル)を同じ背景色にするには、SelectedRowHeader、Highlight、Focusの各組み込みスタイルに対して、BackColorをすべて同じ色に設定します。
◎サンプルコード(VB)
C1FlexGrid1.Styles.Highlight.BackColor = Color.LightGreen
C1FlexGrid1.Styles.SelectedRowHeader.BackColor = Color.LightGreen
C1FlexGrid1.Styles.Focus.BackColor = Color.LightGreen
◎サンプルコード(C#)
c1FlexGrid1.Styles.Highlight.BackColor = Color.LightGreen;
c1FlexGrid1.Styles.SelectedRowHeader.BackColor = Color.LightGreen;
c1FlexGrid1.Styles.Focus.BackColor = Color.LightGreen;
(3)カスタムスタイルを設定する
カスタムスタイルを作成し、OwnerDrawCellイベント内で選択行(=カレント行)のセルかどうかを調べ、一致すればこのスタイルを適用することで、選択行の背景色を変更します。
メモ:
SelectionMode=Rowの場合、Row.Selectedプロパティ※では行の選択状態を判別できないため、C1FlexGridのSelectionプロパティで選択範囲を取得し、行番号がその r1 プロパティと一致するかどうかで選択行のセルであることを判断しています。
※SelectionMode=ListBoxの場合のみ、選択状態を取得可能。詳細は製品ヘルプの「Selected プロパティ (Row)」の項を参照してください。
以下のコードでは、背景色をColor.Azureに設定したカスタムスタイルを作成して行に適用しています。
◎サンプルコード(VB)
Dim ns As CellStyle = C1FlexGrid1.Styles.Add("NormalStyle")
ns.BackColor = Color.Azure
ns.ForeColor = System.Drawing.Color.Black
C1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw
・・・(途中省略)・・・
Private Sub C1FlexGrid1_OwnerDrawCell(sender As Object, e As OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell
Dim cr As CellRange = C1FlexGrid1.Selection
If e.Row = cr.r1 AndAlso e.Col > 0 Then
e.Style = C1FlexGrid1.Styles("NormalStyle")
End If
End Sub
◎サンプルコード(C#)
CellStyle ns = c1FlexGrid1.Styles.Add("NormalStyle");
ns.BackColor = Color.Azure;
ns.ForeColor = System.Drawing.Color.Black;
c1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw;
・・・(途中省略)・・・
private void c1FlexGrid1_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
{
CellRange cr = c1FlexGrid1.Selection;
if (((e.Row == cr.r1) && (e.Col > 0)))
{
e.Style = c1FlexGrid1.Styles["NormalStyle"];
}
}