Я создал класс, который наследует панель, а затем заполнил панель Textbox
. Затем я пытаюсь добавить водяной знак / заполнитель в Textbox
с этим кодом:
Protected Overrides Sub WndProc(ByRef m As Message)
MyBase.WndProc(m)
Dim sTxt As String = Me.Text
sTxt = IIf(sTxt.Length = 0, txt.Text, sTxt)
If m.Msg = &HF Then
If Not Me.Focused AndAlso String.IsNullOrEmpty(sTxt) AndAlso Not String.IsNullOrEmpty(Me.WaterMark) Then
Using g = Me.CreateGraphics()
TextRenderer.DrawText(g, Me.WaterMark, Me.Font, Me.ClientRectangle, Color.Red, Me.BackColor, TextFormatFlags.Top Or TextFormatFlags.Left)
End Using
End If
MyBase.Update()
End If
End Sub
Я пробовал этот код только с Textbox
, и WaterMark
действительно появляется, но когда я пытаюсь использовать его в моем пользовательском тексте, WaterMark
никогда не появляется. Я думаю, что проблема в том, что WndProc
Событие никогда не запускается, потому что я добавил Textbox
внутри панели. Итак, как я могу переопределить Panel_WndProc
на Txt_WndProc
?