BorderStyleプロパティがWindows.Forms.BorderStyle.FixedSingleの場合のみ枠線の色を変えます。
Imports System.ComponentModel
Public Class CsTextBox
Inherits System.Windows.Forms.TextBox
Private _BorderColor As Color = System.Drawing.SystemColors.ControlText
<EditorBrowsable(EditorBrowsableState.Always), Browsable(True), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible), _
DefaultValue(GetType(Color), "ControlText"), Category("カスタム"), _
Description("境界線の色です。BorderStyleプロパティがWindows.Forms.BorderStyle.FixedSingleの場合のみ有効です。")> _
Public Property BorderColor() As Color
Get
Return Me._BorderColor
End Get
Set(ByVal value As Color)
Me._BorderColor = value
Me.Invalidate()
End Set
End Property
Private Const WM_PAINT As Integer = &HF
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case WM_PAINT
MyBase.WndProc(m)
Call DrawRectangle()
Case Else
MyBase.WndProc(m)
End Select
End Sub
Protected Overridable Sub DrawRectangle()
If Me.BorderStyle = Windows.Forms.BorderStyle.FixedSingle Then
Dim g As Graphics = Me.CreateGraphics()
Dim rect As Rectangle = Me.ClientRectangle
Dim LinePen As New Pen(Me.BorderColor)
Try
g.DrawRectangle(LinePen, rect.X, rect.Y, rect.Width - 1, rect.Height - 1)
Finally
LinePen.Dispose()
End Try
End If
End Sub
End Class
0 件のコメント:
コメントを投稿