FlexGrid for WPF
行ヘッダを設定する
基本操作 > 行 > 行ヘッダを設定する

行ヘッダセルにテキストをキャプションとして追加するために、CellFactory クラスを継承して、ヘッダセル上にカスタムテキストを表示できます。

次の例では、非連結グリッドを作成していることを前提として、カスタムセルファクトリを使用する方法を示します。

【実行例】

 

コードのコピー
'CellFactoryクラスを継承してカスタムセルファクトリを使用します
Class Custom1CellFactory
    Inherits CellFactory
    Public Overrides Sub CreateRowHeaderContent(grid As C1FlexGrid, bdr As Border, range As CellRange)
        Dim tb = New TextBlock()
        tb.HorizontalAlignment = HorizontalAlignment.Center
        tb.VerticalAlignment = VerticalAlignment.Center
        tb.Text = GetAlphaRowHeader(range.Row)
        bdr.Child = tb
    End Sub
    'A,B..などスタイルの行ヘッダを作成します
    Private Function GetAlphaRowHeader(p As Integer) As String
        Return GetAlphaRowHeader(p, String.Empty)
    End Function
    Private Function GetAlphaRowHeader(p As Integer, s As String) As String
        Dim [rem] = p Mod 26
        s = ChrW(CInt(Asc("A")) + [rem]) & s
        p = p / 26 - 1
        Return If(p < 0, s, GetAlphaRowHeader(p, s))
    End Function
End Class
コードのコピー
//CellFactoryクラスを継承してカスタムセルファクトリを使用します
class Custom1CellFactory : CellFactory
  {
     public override void CreateRowHeaderContent(C1FlexGrid grid, Border bdr, CellRange range)
       {
          var tb = new TextBlock();
          tb.HorizontalAlignment = HorizontalAlignment.Center;
          tb.VerticalAlignment = VerticalAlignment.Center;
          tb.Text = GetAlphaRowHeader(range.Row);
          bdr.Child = tb;
       }
          //A,B..などスタイルの行ヘッダを作成します
         string GetAlphaRowHeader(int p)
          {
            return GetAlphaRowHeader(p, string.Empty);
          }
         string GetAlphaRowHeader(int p, string s)
          {
            var rem = p % 26;
            s = (char)((int)'A' + rem) + s;
            p = p / 26 - 1;
            return p < 0 ? s : GetAlphaRowHeader(p, s);
          }   
       }

また、行ヘッダ内の各セルにアクセスするため、RowHeaders という追加のプロパティが提供されています。たとえば、次のコードでは一番上の行ヘッダをアクセスします。

コードのコピー
int row = 0;
C1FlexGrid.RowHeaders[row, 0] = "行ヘッダ";