作成日: 2018/04/02 最終更新日: 2018/04/02
文書種別
使用方法
詳細
グリッドのVisualStyleを任意の定義済みスタイルに設定すると、デフォルトのスタイルがこれによって上書きされ、選択セルの位置を示す行ヘッダー、列ヘッダーの背景色は、適用されたスタイルの内部定義に従って変化します。
例:VisualStyleプロパティがOffice2007Blueの場合、オレンジ色になる。
この背景色を異なる色に変更したり、着色されないようにするには、C1FlexGridRendererクラスを使用します。
このクラスは、カスタムグリッドレンダラの抽象ベースクラスで、C1FlexGridには「GridRendererOffice2007Blue」など実際の視覚スタイルを実装する各種クラスが用意されています。
例えば、VisualStyleをOffice2007Blueに設定したグリッドで、選択時の行ヘッダーと列ヘッダーの色を青に変更するには、以下のようなコードを使用します。
※下記コードで、ブラシの色を「Color.FromArgb(228, 236, 247」に設定すると、非選択時と同じ色になるため、セルを選択してもヘッダーの色が着色されないように見せることができます。
◎サンプルコード(VB)
◎サンプルコード(C#)
例:VisualStyleプロパティがOffice2007Blueの場合、オレンジ色になる。
この背景色を異なる色に変更したり、着色されないようにするには、C1FlexGridRendererクラスを使用します。
このクラスは、カスタムグリッドレンダラの抽象ベースクラスで、C1FlexGridには「GridRendererOffice2007Blue」など実際の視覚スタイルを実装する各種クラスが用意されています。
例えば、VisualStyleをOffice2007Blueに設定したグリッドで、選択時の行ヘッダーと列ヘッダーの色を青に変更するには、以下のようなコードを使用します。
※下記コードで、ブラシの色を「Color.FromArgb(228, 236, 247」に設定すると、非選択時と同じ色になるため、セルを選択してもヘッダーの色が着色されないように見せることができます。
◎サンプルコード(VB)
Public Class Form1
Dim i As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.VisualStyle = VisualStyle.Office2007Blue
C1FlexGrid1.Renderer = New MyRenderer()
End Sub
End Class
Class MyRenderer
Inherits C1.Win.C1FlexGrid.GridRendererOffice2007Blue
Public Overrides Sub OnDrawCell(flex As C1.Win.C1FlexGrid.C1FlexGridBase, e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs, cellType As CellType)
If cellType = CellType.ColumnHeaderSelected Or cellType = CellType.ColumnHeaderSelectedHot Or cellType = C1FlexGridRenderer.CellType.RowHeaderSelected Or cellType = C1FlexGridRenderer.CellType.RowHeaderSelectedHot Then
'セルの背景を描画します。
e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(0, 0, 255)), e.Bounds)
'e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(228, 236, 247)), e.Bounds) '非選択時と同色
'セルの境界を描画します。
e.DrawCell(C1.Win.C1FlexGrid.DrawCellFlags.Border)
Else
MyBase.OnDrawCell(flex, e, cellType)
End If
End Sub
End Class
Dim i As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.VisualStyle = VisualStyle.Office2007Blue
C1FlexGrid1.Renderer = New MyRenderer()
End Sub
End Class
Class MyRenderer
Inherits C1.Win.C1FlexGrid.GridRendererOffice2007Blue
Public Overrides Sub OnDrawCell(flex As C1.Win.C1FlexGrid.C1FlexGridBase, e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs, cellType As CellType)
If cellType = CellType.ColumnHeaderSelected Or cellType = CellType.ColumnHeaderSelectedHot Or cellType = C1FlexGridRenderer.CellType.RowHeaderSelected Or cellType = C1FlexGridRenderer.CellType.RowHeaderSelectedHot Then
'セルの背景を描画します。
e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(0, 0, 255)), e.Bounds)
'e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(228, 236, 247)), e.Bounds) '非選択時と同色
'セルの境界を描画します。
e.DrawCell(C1.Win.C1FlexGrid.DrawCellFlags.Border)
Else
MyBase.OnDrawCell(flex, e, cellType)
End If
End Sub
End Class
◎サンプルコード(C#)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.VisualStyle = VisualStyle.Office2007Blue;
c1FlexGrid1.Renderer = new MyRenderer();
}
}
class MyRenderer : C1.Win.C1FlexGrid.GridRendererOffice2007Blue
{
public override void OnDrawCell(C1.Win.C1FlexGrid.C1FlexGridBase flex, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e, CellType cellType)
{
if (((cellType == CellType.ColumnHeaderSelected)
|| ((cellType == CellType.ColumnHeaderSelectedHot)
|| ((cellType == C1FlexGridRenderer.CellType.RowHeaderSelected)
|| (cellType == C1FlexGridRenderer.CellType.RowHeaderSelectedHot)))))
{
// セルの背景を描画します。
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(0, 0, 255)), e.Bounds);
//e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(228, 236, 247)), e.Bounds); // 非選択時と同色
// セルの境界を描画します。
e.DrawCell(C1.Win.C1FlexGrid.DrawCellFlags.Border);
}
else
{
base.OnDrawCell(flex, e, cellType);
}
}
}
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.VisualStyle = VisualStyle.Office2007Blue;
c1FlexGrid1.Renderer = new MyRenderer();
}
}
class MyRenderer : C1.Win.C1FlexGrid.GridRendererOffice2007Blue
{
public override void OnDrawCell(C1.Win.C1FlexGrid.C1FlexGridBase flex, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e, CellType cellType)
{
if (((cellType == CellType.ColumnHeaderSelected)
|| ((cellType == CellType.ColumnHeaderSelectedHot)
|| ((cellType == C1FlexGridRenderer.CellType.RowHeaderSelected)
|| (cellType == C1FlexGridRenderer.CellType.RowHeaderSelectedHot)))))
{
// セルの背景を描画します。
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(0, 0, 255)), e.Bounds);
//e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(228, 236, 247)), e.Bounds); // 非選択時と同色
// セルの境界を描画します。
e.DrawCell(C1.Win.C1FlexGrid.DrawCellFlags.Border);
}
else
{
base.OnDrawCell(flex, e, cellType);
}
}
}
旧文書番号
82589