作成日: 2014/09/26 最終更新日: 2014/09/26
文書種別
使用方法
詳細
デフォルトでは、範囲選択されたセルには組み込みの「Highlight」スタイルが適用され、強調表示されます。HighLightプロパティの設定によりこの動作を変更し、強調表示を行わないようにします。
加えて、オーナー描画機能により、Graphicオブジェクトを使用して、実際に選択範囲を可視化するための矩形を透過色で重ねて描画することで、Microsoft Excelのような、背景を透過した範囲選択表示が可能になります。
以下の例では、2列目と4列目に背景色を設定し、オーナー描画で、実際の選択範囲を描画し、範囲選択後も背景の(セルに設定された)色が判別できるようにしています。
◎サンプルコード(VB)
◎サンプルコード(C#)
加えて、オーナー描画機能により、Graphicオブジェクトを使用して、実際に選択範囲を可視化するための矩形を透過色で重ねて描画することで、Microsoft Excelのような、背景を透過した範囲選択表示が可能になります。
以下の例では、2列目と4列目に背景色を設定し、オーナー描画で、実際の選択範囲を描画し、範囲選択後も背景の(セルに設定された)色が判別できるようにしています。
◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' グリッドを設定します
fg.Cols(2).StyleNew.BackColor = Color.Cornsilk
fg.Cols(4).StyleNew.BackColor = Color.LightBlue
fg(2, 2) = "AAA"
fg(3, 3) = "BBB"
' 強調表示をしないよう設定します
fg.HighLight = HighLightEnum.Never
' オーナー描画を使用します
fg.DrawMode = DrawModeEnum.OwnerDraw
End Sub
Private Sub fg_OwnerDrawCell(ByVal sender As System.Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles fg.OwnerDrawCell
' セルを描画します
e.DrawCell()
' 選択範囲を取得します
Dim selRng As CellRange = fg.GetCellRange(fg.Row, fg.Col, fg.RowSel, fg.ColSel)
If (selRng.IsSingleCell) = False Then
' 範囲選択の場合、描画しようとするセルが選択範囲に
'含まれていれば、透過色のブラシで矩形を塗りつぶします
If selRng.Contains(e.Row, e.Col) = True Then
Dim selRct As Rectangle = fg.GetCellRect(e.Row, e.Col)
Dim br As SolidBrush = New SolidBrush((Color.FromArgb(100, 216, 245, 240)))
'背景色とのブレンドを指定します
e.Graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver
e.Graphics.FillRectangle(br, selRct)
e.Handled = True
End If
End If
End Sub
' グリッドを設定します
fg.Cols(2).StyleNew.BackColor = Color.Cornsilk
fg.Cols(4).StyleNew.BackColor = Color.LightBlue
fg(2, 2) = "AAA"
fg(3, 3) = "BBB"
' 強調表示をしないよう設定します
fg.HighLight = HighLightEnum.Never
' オーナー描画を使用します
fg.DrawMode = DrawModeEnum.OwnerDraw
End Sub
Private Sub fg_OwnerDrawCell(ByVal sender As System.Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles fg.OwnerDrawCell
' セルを描画します
e.DrawCell()
' 選択範囲を取得します
Dim selRng As CellRange = fg.GetCellRange(fg.Row, fg.Col, fg.RowSel, fg.ColSel)
If (selRng.IsSingleCell) = False Then
' 範囲選択の場合、描画しようとするセルが選択範囲に
'含まれていれば、透過色のブラシで矩形を塗りつぶします
If selRng.Contains(e.Row, e.Col) = True Then
Dim selRct As Rectangle = fg.GetCellRect(e.Row, e.Col)
Dim br As SolidBrush = New SolidBrush((Color.FromArgb(100, 216, 245, 240)))
'背景色とのブレンドを指定します
e.Graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver
e.Graphics.FillRectangle(br, selRct)
e.Handled = True
End If
End If
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// グリッドを設定します
fg.Cols[2].StyleNew.BackColor = Color.Cornsilk;
fg.Cols[4].StyleNew.BackColor = Color.LightBlue;
fg[2, 2] = "AAA";
fg[3, 3] = "BBB";
//強調表示をしないよう設定します
fg.HighLight = HighLightEnum.Never;
//オーナー描画を使用します
fg.DrawMode = DrawModeEnum.OwnerDraw;
}
private void fg_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
{
//セルを描画します
e.DrawCell();
//選択範囲を取得します
CellRange selRng = fg.GetCellRange(fg.Row, fg.Col, fg.RowSel, fg.ColSel);
if (selRng.IsSingleCell == false)
{
//範囲選択の場合、描画しようとするセルが選択範囲に
//含まれていれば、透過色のブラシで矩形を塗りつぶします
if (selRng.Contains(e.Row, e.Col) == true)
{
Rectangle selRct = fg.GetCellRect(e.Row, e.Col);
SolidBrush br = new SolidBrush((Color.FromArgb(100, 216, 245, 240)));
//背景色とのブレンドを指定します
e.Graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
e.Graphics.FillRectangle(br, selRct);
e.Handled = true;
}
}
}
{
// グリッドを設定します
fg.Cols[2].StyleNew.BackColor = Color.Cornsilk;
fg.Cols[4].StyleNew.BackColor = Color.LightBlue;
fg[2, 2] = "AAA";
fg[3, 3] = "BBB";
//強調表示をしないよう設定します
fg.HighLight = HighLightEnum.Never;
//オーナー描画を使用します
fg.DrawMode = DrawModeEnum.OwnerDraw;
}
private void fg_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
{
//セルを描画します
e.DrawCell();
//選択範囲を取得します
CellRange selRng = fg.GetCellRange(fg.Row, fg.Col, fg.RowSel, fg.ColSel);
if (selRng.IsSingleCell == false)
{
//範囲選択の場合、描画しようとするセルが選択範囲に
//含まれていれば、透過色のブラシで矩形を塗りつぶします
if (selRng.Contains(e.Row, e.Col) == true)
{
Rectangle selRct = fg.GetCellRect(e.Row, e.Col);
SolidBrush br = new SolidBrush((Color.FromArgb(100, 216, 245, 240)));
//背景色とのブレンドを指定します
e.Graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
e.Graphics.FillRectangle(br, selRct);
e.Handled = true;
}
}
}
旧文書番号
70002