https://www.projectgroup.info/tips/Microsoft.NET/comm_0016.html
上記サイトを参考に、枠線の色を変更出来るTextBoxを作成しました。
ビルドしてFormに置き、実際に入力してみると通常のTextBoxより上に表示されてしまいます。
コードの中で影響を及ぼしている箇所があるんでしょうか?
また、中央に表示させるにはどうしたらいいでしょうか?
よろしくお願いします。
VB.NET
1Imports System.Drawing 2Imports System.Windows.Forms 3Imports System.ComponentModel 4 5Public Class ColorTextBox 6 Inherits TextBox 7 Private Const WM_PAINT = &HF 8 Private _CustomBorderColor As Color = Color.FromArgb(171, 173, 179) 9 10 ''' <summary> 11 ''' TextBoxの枠線の色を指定します。 12 ''' </summary> 13 <Description("TextBoxの枠線の色を指定します。")> 14 Public Property CustomBorderColor() As Color 15 Get 16 Return _CustomBorderColor 17 End Get 18 Set(ByVal value As Color) 19 If _CustomBorderColor <> value Then 20 _CustomBorderColor = value 21 Me.Refresh() 22 End If 23 End Set 24 End Property 25 26 ''' <summary> 27 ''' WndProcメソッドオーバーライド 28 ''' </summary> 29 ''' <param name="m"></param> 30 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) 31 MyBase.WndProc(m) 32 If (m.Msg = WM_PAINT) Then 33 Using g As Graphics = CreateGraphics() 34 If _CustomBorderColor <> Color.FromArgb(171, 173, 179) Then 35 Dim p As New System.Drawing.Pen(_CustomBorderColor) 36 g.DrawRectangle(p, 0, 0, Me.Width - 1, Me.Height - 1) 37 Else 38 ControlPaint.DrawVisualStyleBorder(g, New Rectangle(0, 0, Me.Width - 1, Me.Height - 1)) 39 End If 40 End Using 41 End If 42 End Sub 43End Class
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。