TextBox の枠線を変更する
2014/1/10
文書番号:20191
.NETプログラムでTextBoxの枠線の色を変更します。
クリックで拡大
標準のTextBoxを継承したクラス「TextBoxEx」を作成します。
- Project にクラスを一つ追加し、「TextBoxEx」とします。
- 以下のコードを貼り付けます。
- プロジェクトをビルドするとツールバーにコントロールが追加されますのでフォームに追加します。
- TextBoxExの「CustomBorderColor」プロパティに色を設定すると枠線が指定した色で描画されます。
※BorderStyle プロパティを Windows.Forms.BorderStyle.FixedSingle にしておきます。
【VB.NET】
Imports System.ComponentModel
Public Class TextBoxEx
Inherits TextBox
Private Const WM_PAINT = &HF
Private _CustomBorderColor As Color = Color.FromArgb(171, 173, 179)
''' <summary>
''' TextBoxの枠線の色を指定します。
''' </summary>
<Description("TextBoxの枠線の色を指定します。")> _
Public Property CustomBorderColor() As Color
Get
Return _CustomBorderColor
End Get
Set(ByVal value As Color)
If _CustomBorderColor <> value Then
_CustomBorderColor = value
Me.Refresh()
End If
End Set
End Property
''' <summary>
''' WndProcメソッドオーバーライド
''' </summary>
''' <param name="m"></param>
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If (m.Msg = WM_PAINT) Then
Using g As Graphics = CreateGraphics()
If _CustomBorderColor <> Color.FromArgb(171, 173, 179) Then
'標準カラーでない場合は指定色で描画する
Dim p As New System.Drawing.Pen(_CustomBorderColor)
g.DrawRectangle(p, 0, 0, Me.Width - 1, Me.Height - 1)
Else
ControlPaint.DrawVisualStyleBorder(g, New Rectangle(0, 0, Me.Width - 1, Me.Height - 1))
End If
End Using
End If
End Sub
End Class
サンプルダウンロード