次のコードを使用してリストボックス内の最長のアイテムの幅を見つけ、リストボックスのHorizontalExtent
プロパティを変更して、水平スクロールバーの境界内にアイテムを収めようとしています。
Graphics widthFinder = listBox_Transactions.CreateGraphics();
int needScrollWidth = 0; int checkVal = 0;
for (int i = 0; i < listBox_Transactions.Items.Count; i++)
{
checkVal = (int)widthFinder.MeasureString(listBox_Transactions.Items[i].ToString(), listBox_Transactions.Font).Width + 1;
if (needScrollWidth < checkVal)
{ needScrollWidth = checkVal; }
}
listBox_Transactions.HorizontalScrollbar = true;
listBox_Transactions.HorizontalExtent = needScrollWidth;
listBox_Transactions.Invalidate();
コードは、常に164を返すことを除いて、期待どおりに機能しているようです。これが発生widthFinder.MeasureString(listBox_Transactions.Items[i].ToString(), listBox_Transactions.Font).Width
する可能性がある理由を検索しましたが、見つかりませんでした。何か案は?