- PR -

TextBoxのBorderStyle変更時の文字列描画位置について

1
投稿者投稿内容
からし
会議室デビュー日: 2007/10/17
投稿数: 1
投稿日時: 2007-10-17 18:22
お世話になります。
C#(VS2005)を用いてのWindowsアプリケーションの開発関連です。

TextBoxを継承したコントロールにおいて、
Readonly= True (読み取り専用)時には、TextBoxの枠線を消去する
機能付加を行っています。

オーバーライドしたReadOnlyプロパティ内で、TextBoxのBorderStyleを
BorderStyle.Noneにすることでの枠線消去機能の実装を行っているのですが、
BorderStyle変更時にTextBoxのHeightが変更されてしまい、
文字列の描画位置が左上に移動してしまいます。

BorderStyleを変更時でも、同じ場所に文字列を描画したいと考え、
継承コントロール内で以下の方法を試し、頓挫しました。

1.OnPaintをオーバーライドして、TextRenderer.DrawTextで文字列を描画する。
→フォーカス取得時の描画にて、フォントが変更されるため、挫折。

2.変更されたTextBoxのHeightをMultilineとPaddingを指定して、強制的に元に戻す。
→TextBoxのPaddingプロパティに値を設定しても、余白が設定されないため、挫折。

枠線だけを消去できて、文字列の描画位置が変更しないという
実装方法をご教授いただけますでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-17 18:53
コントロールを自作した方が早いように思えます。
組み合わせとしては枠だけのコントロール + 枠なし TextBox ですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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