FlexGrid for WPF
セルのユーザーデータをツールチップに表示
基本操作 > セル > セルのユーザーデータをツールチップに表示

ユーザーがセルデータをツールチップに表示する場合は、WPF版の標準の TooltipService を使用してグリッドで使用できるツールチップを作成できます。そして、カスタムセルファクトリを使用することで、ツールチップをセルに付けて表示できます。

たとえば、次の例をご覧ください。

【実行例】

Visual Basic
コードのコピー
Partial Public Class MainWindow
Inherits Window
Public Sub New()
    InitializeComponent()
    _grid.CellFactory = New ToolTipCellFactory()
    Dim list As New List(Of Customer)()
    For i As Integer = 0 To 49
        Dim cus     As Customer = New Customer
        cus.Name = "Customer " + i.ToString()
        cus.Age = 10 + i
        cus.Active = i Mod 3 <> 0
        list.Add(cus)
    Next i
    _grid.ItemsSource = list
    For Each col As Column In _grid.Columns
        col.Tag = String.Format("tag For column'{0}'", col.ColumnName)
    Next
End Sub
' イベントハンドラ―
Private Sub _grid_PrepareCellForEdit(sender As Object, e As CellEditEventArgs) Handles _grid.PrepareCellForEdit
    ' 選択の外観を変更してエディタをカスタマイズします
    Dim b As Border = DirectCast(e.Editor, Border)
    Dim tb As TextBox = DirectCast(b.Child, TextBox)
    If tb IsNot Nothing Then
        tb.Background = New SolidColorBrush(Colors.Black)
        tb.Foreground = New SolidColorBrush(Colors.White)
    End If
End Sub
End Class
C#
コードのコピー
public partial class MainWindow : Window
{
    public MainWindow()
    
    {
        InitializeComponent();
        _grid.CellFactory = new ToolTipCellFactory();
        var list = new List<Customer>();
        for (int i = 0; i < 50; i++)
        {
            list.Add(new Customer()
            {
                名前 = "Customer " + i.ToString(),
                年齢 = 10 + i,
                アクティブ = i % 3 != 0
            });
        }
        _grid.ItemsSource = list;

        foreach (Column col in _grid.Columns)
        {
            col.Tag = string.Format("'{0}'列のタグ", col.ColumnName);
        }

        // イベントハンドラ―
        _grid.PrepareCellForEdit += _grid_PrepareCellForEdit;
    }

    // 選択の外観を変更してエディタをカスタマイズします
    void _grid_PrepareCellForEdit(object sender, CellEditEventArgs e)
    {
        var b = e.Editor as Border;
        var tb = b.Child as TextBox;
        if (tb != null)
        {
            tb.Background = new SolidColorBrush(Colors.Black);
            tb.Foreground = new SolidColorBrush(Colors.White);
        }
    }
   
}

セルにツールチップを追加するカスタムセルファクトリは、次のようになります。

Visual Basic
コードのコピー
Public Class ToolTipCellFactory
    Inherits CellFactory   
Public Overrides Sub CreateCellContent(ByVal grid As C1FlexGrid, ByVal bdr As Border, ByVal rng As CellRange)
        MyBase.CreateCellContent(grid, bdr, rng)
        Dim tip = String.Format("行: {0} 列: {1}" & vbCrLf & "内容: {2}" & vbCrLf & "列タグ: {3}", rng.Row,
            rng.Column, grid(rng.Row, rng.Column), grid.Columns(rng.Column).Tag)
        ToolTipService.SetToolTip(bdr, tip)
    End Sub
End Class
C#
コードのコピー
public class ToolTipCellFactory : CellFactory
{
    public override void CreateCellContent(C1FlexGrid grid, Border bdr, CellRange rng)
    {
        
        // コンテンツを作成します
        base.CreateCellContent(grid, bdr, rng);
        // ツールチップを追加します
        var tip = string.Format("行: {0} 列: {1}\r\n内容: {2}\r\n列タグ: {3}",
            rng.Row,
            rng.Column,
            grid[rng.Row, rng.Column],
            grid.Columns[rng.Column].Tag);
        ToolTipService.SetToolTip(bdr, tip);
       
    }
}