作成日: 2022/10/17 最終更新日: 2022/10/17
文書種別
不具合
発生環境
.NET 6
状況
回避方法あり
詳細
一部の列のWidthプロパティにStarサイズ("*")が設定されており、列の一部がグリッド外にはみ出す(すべての列を表示するには水平スクロールする必要がある)とき、すべての列がグリッド内に収まるまでFlexGridコントロールのサイズを拡大し、その後元のサイズまで縮小すると、グリッドを水平方向にスクロールした際のパフォーマンスが低下します。
回避方法
グリッドがスクロール可能な状態のときにStarサイズを一時的に解除する方法が考えられます。
※Starサイズが指定されている列にのみ、MinWidth=100が指定されていることを前提としています
◎サンプルコード(C#)
private void flexGrid1_SizeChanged(object sender, SizeChangedEventArgs e)
{
double totalWidth = 0;
foreach (var column in flexGrid1.Columns)
totalWidth += (double.IsNaN(column.MinWidth) ? (double.IsNaN(column.ActualWidth) ? 0d : column.ActualWidth) : column.MinWidth);
foreach (var column in flexGrid1.Columns)
{
if (column.MinWidth > 0)
column.Width = (flexGrid1.ActualWidth <= totalWidth) ? GridLength.Auto : new GridLength(1, GridUnitType.Star);
}
}