Vb.net在面板内的自定义文本上添加占位符

时间:2018-11-14 05:07:25

标签: .net vb.net visual-studio-2015

我创建了一个继承面板的类,然后用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_WndProcTxt_WndProc

0 个答案:

没有答案