|
回答ありがとうございます。
お返事遅くなりました。
■No35409 (Hongliang さん) に返信
> MeasureString に渡す文字列が違ってる気がします。
> ListBox の GetItemText で取得してますか?
その通りでした。ただ文字列を渡すだけでは駄目なのですね。
最初は(1)でやっていて、ご指摘の通り(2)にしたらOKでした。
for (int i = 0; i < LBox.Items.Count; i++ )
{
------------------------------------------------------------
(1) strSize = graph.MeasureString(LBox.Items[i].ToString(), // ×
LBox.Font);
------------------------------------------------------------
(2) strSize = graph.MeasureString(LBox.GetItemText(LBox.Items[i]), // ○
LBox.Font);
------------------------------------------------------------
if (strMaxSize.Width < strSize.Width)
{
// リスト内で最大の文字列長を持つ
// 項目の幅を取得する。
strMaxSize = strSize;
}
}
MSDNでGetItemTextを確認したらこのように書いてありました。
<<以下引用>>
戻り値
DisplayMember プロパティを指定しない場合は、GetItemText の戻り値が項目の ToString メソッドの値になります。
それ以外の場合、このメソッドは item パラメータで指定されたオブジェクトの DisplayMember プロパティに指定
されているメンバの文字列値を返します。
<<引用ここまで>>
しかし、MeasureStringに渡している文字列は同じだったのですが・・・
DisplayMemberに値を設定しているか否かで得られる文字列に
何か違いがあるのでしょうか・・・。
希望の動作が出来ましたので解決とさせて頂きます。
ありがとうございましたm(__)m
|