Vb.net Добавить заполнитель для пользовательского текста внутри панели - PullRequest
0 голосов
/ 14 ноября 2018

Я создал класс, который наследует панель, а затем заполнил панель 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?

...