c# TextBox プログラミング

【C#】TextBoxの枠線の色を変更する方法|カスタムコントロールを作成する

この記事でわかる事

TextBoxの枠線の色を変える方法

 

こんな感じでTextBoxの枠線色かえちゃいます!

※この例では赤色に変えています。

TextBoxの枠線色変更


TextBoxの枠線の色を変更する方法|カスタムコントロールを作成する

TextBoxのプロパティからは変更できない|そう簡単にはいかない…

プロパティから枠線色は変更できない

これができればいいんですが、残念ながらできません。

なので、ちょっと面倒ですがカスタムコントロールを作ってあげる必要があります。

カスタムコントロールを作成する

Visual Studioの「ソリューションエクスプローラー」→「プロジェクト」→「右クリック:追加」→「新しい項目」をクリックします。

するとこんな画面がでます。

カスタムコントロールを作る

この中から、「カスタムコントロール」を選択し、ファイル名を入力します。

※わたしは「TextBoxEx」にしました。

 

そうしたら次はソースコードを書いていきます。

TextBoxのカスタムコントロール|ソースコード実装内容

ソースコード



 

ポイントはここ!

protected override void WndProc(ref Message m)

WndProcの中で枠線を描画するようにしています。

※TextBoxはOnPaintでの描画が走らないのでWndProcで処理しています。

 

まずは、「if (m.Msg == 0x85)」で処理するメッセージをチェック。

そして、以下のコードで四角形を作成。

Inflateで1だけ拡大しています。これをやらないと見た目なにも描画されないのでお忘れなく。

 

そして、以下で描画してあげます。

一番最後の引数を「 ButtonBorderStyle.Dotted」にすると、ドット(点線)の枠線が描画できたりもします。

目的に応じて変更してみてください。

プロパティでBorderStyle:Noneにすることを忘れずに

BorderStyleを設定

多分デフォルトだと「FixedSingle」になっていると思います。

「None」に変更してあげてください。

そうしないと、黒い枠線が描画され、その上に色枠線が描画され、ちょっと変な感じになります。

 

枠線色はプロパティ、またはソースコード上から変更してあげよう!

このように、プロパティに「BorderColor」というのが存在しているはずです。

ここで枠線の色を設定することが可能です。

BorderStyleを設定

または、ソースコード上から「BorderColor」に好きな色を設定してあげるでもOKです。

まとめ|TextBoxの枠線の色を変更したい場合はカスタムコントロールで対応

  • TextBoxの枠線の色は通常は変更不可
  • 変更したい場合は、カスタムコントロールを作成しよう

\この記事はどうでしたか?/

-c#, TextBox, プログラミング

© 2021 ジョブログLiFE