作成日: 2022/06/30 最終更新日: 2022/06/30
文書種別
使用方法
詳細
固定行をマージして垂直方向にスクロールすると、固定行のテキストが重なって表示されることがあります。

これは、マージされた固定行の描画ロジックがスクロール操作に追随できなくなったためと考えられますが、AfterScrollイベントでC1FlexGridのInvalidateメソッドを実行することで、この動作を避けることができます。
以下に簡単なサンプルコードを記載します。
◎サンプルコード(VB)

これは、マージされた固定行の描画ロジックがスクロール操作に追随できなくなったためと考えられますが、AfterScrollイベントでC1FlexGridのInvalidateメソッドを実行することで、この動作を避けることができます。
以下に簡単なサンプルコードを記載します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' FlexGridの設定
C1FlexGrid1.Cols.Fixed = 1 '固定列の数
C1FlexGrid1.Rows.Count = 121
C1FlexGrid1.Cols(0).Width = 50
C1FlexGrid1.AllowMerging = AllowMergingEnum.Custom
Dim col As Integer = 0 'マージする列
Dim i As Integer
For i = 1 To C1FlexGrid1.Rows.Count - 1 Step 3
' マージの設定
Dim range = C1FlexGrid1.GetCellRange(i, col, (i + 2), col)
range.Style = C1FlexGrid1.Styles.Fixed
C1FlexGrid1.MergedRanges.Add(range)
C1FlexGrid1(i, col) = (CType(i / 3, Integer) + 101).ToString
Next
End Sub
Private Sub C1FlexGrid1_AfterScroll(sender As Object, e As RangeEventArgs) Handles C1FlexGrid1.AfterScroll
' 対応策
C1FlexGrid1.Invalidate()
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// FlexGridの設定
c1FlexGrid1.Cols.Fixed = 1; //固定列の数
c1FlexGrid1.Rows.Count = 121;
c1FlexGrid1.Cols[0].Width = 50;
c1FlexGrid1.AllowMerging = AllowMergingEnum.Custom;
var col = 0; //マージする列
for (var i = 1; i < c1FlexGrid1.Rows.Count; i += 3)
{
// マージの設定
var range = c1FlexGrid1.GetCellRange(i, col, i + 2, col);
range.Style = c1FlexGrid1.Styles.Fixed;
c1FlexGrid1.MergedRanges.Add(range);
c1FlexGrid1[i, col] = (i / 3 + 101).ToString();
}
}
private void c1FlexGrid1_AfterScroll(object sender, RangeEventArgs e)
{
// 対応策
c1FlexGrid1.Invalidate();
}
}
}