作成日: 2024/02/19 最終更新日: 2024/02/19
文書種別
使用方法
詳細
ShowCellLabelsプロパティ= Trueに設定すると、内容の一部しか表示されていないセルにラベルが表示されますが、この背景色、文字色、フォント等を変更する機能はFlexGridには備わっていません。
代替方法として、ComponentOne収録のSuperToolTip for WinFormsのC1SuperTooltipコントロールを使用してカスタマイズする方法を紹介します。
【実装手順】
1. フォーム上にC1FlexGridコントロールを配置し、C1SuperTooltipコントロールを追加します。
2. C1SuperTooltipコントロールを非表示にします。
3. C1FlexGridのMouseEnterCellイベントで以下を設定します。
・セル内の文字列の幅と、セルの有効幅を取得します。
・両者を比較します。
・前者が大きい場合、C1SuperTooltipのスタイルやフォント等を設定します。
・C1SuperTooltipのSetToolTipメソッドで、FlexGridにツールチップを設定します。
以下に、簡単な設定例を記載記載します。

◎サンプルコード(VB)
代替方法として、ComponentOne収録のSuperToolTip for WinFormsのC1SuperTooltipコントロールを使用してカスタマイズする方法を紹介します。
【実装手順】
1. フォーム上にC1FlexGridコントロールを配置し、C1SuperTooltipコントロールを追加します。
2. C1SuperTooltipコントロールを非表示にします。
3. C1FlexGridのMouseEnterCellイベントで以下を設定します。
・セル内の文字列の幅と、セルの有効幅を取得します。
・両者を比較します。
・前者が大きい場合、C1SuperTooltipのスタイルやフォント等を設定します。
・C1SuperTooltipのSetToolTipメソッドで、FlexGridにツールチップを設定します。
以下に、簡単な設定例を記載記載します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Imports C1.Win.C1SuperTooltip
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1(1, 1) = "あいうえお"
C1FlexGrid1(2, 1) = "あいうえおかきくけこさしすせそ"
' C1SuperTooltipの設定
C1SuperTooltip1.BackgroundGradient = BackgroundGradient.None
End Sub
Private Sub C1FlexGrid1_MouseEnterCell(sender As Object, e As RowColEventArgs) Handles C1FlexGrid1.MouseEnterCell
' ツールチップの非表示
C1SuperTooltip1.Hide()
' マウスポインタ位置のセル情報を取得
Dim text = String.Concat(C1FlexGrid1(e.Row, e.Col))
Dim width1 = TextRenderer.MeasureText(CStr(text), C1SuperTooltip1.Font).Width
Dim width2 = C1FlexGrid1.GetCellRect(e.Row, e.Col).Width
' セル内の文字列の幅がセルの有効幅よりも大きい場合
If width1 > width2 Then
' スタイルを設定してc1SuperTooltipを表示
C1SuperTooltip1.BackColor = Color.PaleTurquoise
C1SuperTooltip1.ForeColor = Color.DarkBlue
C1SuperTooltip1.Font = New Font("メイリオ", 8, FontStyle.Bold)
C1SuperTooltip1.SetToolTip(C1FlexGrid1, text)
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
using C1.Win.C1SuperTooltip;
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Text = c1FlexGrid1.ProductVersion;
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1[1, 1] = "あいうえお";
c1FlexGrid1[2, 1] = "あいうえおかきくけこさしすせそ";
// c1SuperTooltipの設定
c1SuperTooltip1.BackgroundGradient = BackgroundGradient.None;
}
private void c1FlexGrid1_MouseEnterCell(object sender, RowColEventArgs e)
{
// ツールチップの非表示
c1SuperTooltip1.Hide();
// マウスポインタ位置のセル情報を取得
var text = string.Concat(c1FlexGrid1[e.Row, e.Col]);
var width1 = TextRenderer.MeasureText(text, c1SuperTooltip1.Font).Width;
var width2 = c1FlexGrid1.GetCellRect(e.Row, e.Col).Width;
// セル内の文字列の幅がセルの有効幅よりも大きい場合
if (width1 > width2)
{
// スタイルを設定してc1SuperTooltipを表示
c1SuperTooltip1.BackColor = Color.PaleTurquoise;
c1SuperTooltip1.ForeColor = Color.DarkBlue;
c1SuperTooltip1.Font = new Font("メイリオ", 8, FontStyle.Bold);
c1SuperTooltip1.SetToolTip(c1FlexGrid1, text);
}
}
}
}