- PR -

Windows Form での文字列の幅について

1
投稿者投稿内容
sf5
会議室デビュー日: 2004/04/11
投稿数: 12
投稿日時: 2006-03-06 16:57
どうもお世話になります。

等幅フォントに設定したTextBoxとLabelを縦に並べ
同じ文字列を設定して実行すると
表示される幅がどうも違うみたいです。
どうしてそうなるのか原因を教えてください。

開発環境はWindowsXP .NET FrameWork1.1 VB2003です

宜しくお願いいたします。
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-03-06 22:42
たぶん、LabelコントロールではFlatStyleプロパティがSystem以外の場合に、
グリッド フィッティングが行われている為だと思います。

.NET Framework2.0ではFlatStyleプロパティの値に関わらず、
グリッド フィッティングは行われないようです。
sf5
会議室デビュー日: 2004/04/11
投稿数: 12
投稿日時: 2006-03-07 15:51
回答ありがとうございます。

そうなんですか。
他のコントロールでも試すと表示専用だとlabelと同じになるみたいですね。
(Button、GroupBoxとか)
MeasureStringで計ってWidthを設定すると
labelに設定された文字は折り返されちゃいましたし。

とりあえず、2003ではあわすのは無理そうですね。
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-03-07 16:52
可能です。
ですが、状況が良く掴めていません。
どのような事がしたいのでしょうか?
sf5
会議室デビュー日: 2004/04/11
投稿数: 12
投稿日時: 2006-03-07 20:24
やりたいことは
左位置が同じTextBoxとLabelが縦に並べて表示されているFormがあるんですが
同じ長さの文字列を表示した場合に文字列の終端位置が違うので
あわせることは出来ないのかな?ということになります。

txt:−−−−+−−−−1
lbl:−−−−+−−−−1

標準だと「1」の位置がずれてるので・・・
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-03-07 21:17
であればFlatStyleプロパティをSystemにするだけで可能ではないでしょうか?
TextBoxにはエッジがあるので、Labelをその分左にずらさないといけませんが。

また、MeasureStringでTextBoxと同じ表示幅を取得したい場合は、
引数のStringFormatにStringFormat.GenericTypographicを指定します。
sf5
会議室デビュー日: 2004/04/11
投稿数: 12
投稿日時: 2006-03-07 21:45
FlatStyleプロパティをSystemにすることで目的が達成できました。
ありがとうございます。勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)