PowerTools MultiRow for Windows Forms 8.0J
DynamicCellStyle クラス
メンバ  使用例 

DynamicCellStyleContextに従ってCellStyleをカスタマイズできる特別なCellStyleを表します。
構文
Public Class DynamicCellStyle 
   Inherits CellStyle
public class DynamicCellStyle : CellStyle 
解説
DynamicCellStyleを使用すると、CellStyleを動的にカスタマイズできます。ConditionHandlerをイベント処理メソッドに関連付け、特定のDynamicCellStyleContextに従ってCellStyleを返すことができます。
使用例
次のサンプルコードは、"NewRowDefaultCellStyle"を実装する方法を示します。DynamicCellStyleRow.DefaultCellStyleに設定し、描画された行が新規行の場合に特定のCellStyleを返しています。
using System;
using System.Windows.Forms;
using System.Drawing;

namespace GrapeCity.Win.MultiRow.SampleCode
{
    public class DynamicCellStyleDemo : Form
    {
        private GcMultiRow gcMultiRow1 = new GcMultiRow();

        public DynamicCellStyleDemo()
        {
            this.gcMultiRow1.Dock = DockStyle.Fill;
            this.Controls.Add(this.gcMultiRow1);
            this.Load += new EventHandler(Form1_Load);
            this.Text = "DynamicCellStyle Demo (If any cell's value is not empty, color will change)";
            this.Size = new Size(700, 400);
        }
        private void Form1_Load(object sender, EventArgs e)
        {

            Template template1 = Template.CreateGridTemplate(7);

            DynamicCellStyle dynamicCellStyle1 = new DynamicCellStyle();
            dynamicCellStyle1.ConditionHandler += new DynamicCellStyleConditionHandler(GetNewRowDefaultCellStyle);

            template1.Row.DefaultCellStyle = dynamicCellStyle1;

            gcMultiRow1.Template = template1;
            gcMultiRow1.RowCount = 10;
        }

        public CellStyle GetNewRowDefaultCellStyle(DynamicCellStyleContext context)
        {
            CellStyle newRowDefaultCellStyle = new CellStyle();

            // If all cell's value in a specific row are empty, the cell's back color is white, otherwise color is yellow.
            newRowDefaultCellStyle.BackColor = Color.White;
            if (context.CellScope == CellScope.Row)
            {
                for (int i = 0; i < context.GcMultiRow.Rows[context.RowIndex].Cells.Count; i++)
                {
                    object value = context.GcMultiRow.Rows[context.RowIndex][i].Value;

                    if (value != null)
                    {
                        newRowDefaultCellStyle.BackColor = Color.Yellow;
                        break;
                    }
                }
            }
            
            return newRowDefaultCellStyle;
        }

        [STAThreadAttribute()]
        public static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new DynamicCellStyleDemo());
        }
    }
}
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports GrapeCity.Win.MultiRow

Public Class DynamicCellStyleDemo
    Inherits Form
    Private gcMultiRow1 As New GcMultiRow()

    Public Sub New()
        Me.gcMultiRow1.Dock = DockStyle.Fill
        Me.Controls.Add(Me.gcMultiRow1)
        Me.Text = "DynamicCellStyle Demo (If any cell's value is not empty, color will change)"
        Me.Size = New Size(700, 400)
    End Sub
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Dim template1 As Template = Template.CreateGridTemplate(7)

        Dim dynamicCellStyle1 As New DynamicCellStyle()
        dynamicCellStyle1.ConditionHandler = AddressOf Me.GetNewRowDefaultCellStyle

        template1.Row.DefaultCellStyle = dynamicCellStyle1

        gcMultiRow1.Template = template1
        gcMultiRow1.RowCount = 10
    End Sub

    Public Function GetNewRowDefaultCellStyle(ByVal context As DynamicCellStyleContext) As CellStyle
        Dim newRowDefaultCellStyle As New CellStyle()

        ' If all cell's value in a specific row are empty, the cell's back color is white, otherwise color is yellow.
        newRowDefaultCellStyle.BackColor = Color.White
        If context.CellScope = CellScope.Row Then

            For i As Integer = 0 To context.GcMultiRow.Rows(context.RowIndex).Cells.Count - 1
                Dim value As Object = context.GcMultiRow.Rows(context.RowIndex)(i).Value
                If value <> Nothing Then
                    newRowDefaultCellStyle.BackColor = Color.Yellow
                    Exit For
                End If
            Next
        End If
        Return newRowDefaultCellStyle
    End Function
    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New DynamicCellStyleDemo())
    End Sub
End Class
継承階層

System.Object
   GrapeCity.Win.MultiRow.CellStyle
      GrapeCity.Win.MultiRow.DynamicCellStyle

参照

DynamicCellStyle メンバ
GrapeCity.Win.MultiRow 名前空間
CellStyle クラス
DynamicCellStyleConditionHandler デリゲート
DynamicCellStyleContext クラス
NamedCellStyle クラス
ConditionalCellStyle クラス
CombinedCellStyle クラス

 

 


© 2008-2015 GrapeCity inc. All rights reserved.