创建一个文本框“提示"两个不同文本框的消息(水印)
问题描述:
我想知道如何为表单中的两个不同文本框创建提示"?
I was wondering how to create a "hint" for two different textboxes in a form?
这是我的代码:
导入 System.Runtime.InteropServices
Form_Load 事件:
SendMessage(Me.txtAmount.Handle, &H1501, 0, "$X.XX")
SendMessage(Me.txtMemo.Handle, &H1501, 0, "Enter a transaction memo.")
共享功能:
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal lParam As String) As Int32
End Function
此代码仅适用于 txtAmount
文本框.知道如何让两个人以一种形式工作吗?
This code is only working for the txtAmount
textbox. Any idea how to get two working in one form?
谢谢.
答
创建一个类:
Public Class MultilineTextBoxWaterMark
Inherits TextBox
Private Const WM_PAINT = &HF
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_PAINT Then
If Text.Length <> 0 Or Me.Focused Then
Return
End If
Using g As Graphics = Me.CreateGraphics, format As New StringFormat()
format.LineAlignment = StringAlignment.Near
g.DrawString("Enter a transaction memo.", Me.Font, Brushes.LightGray, Me.ClientRectangle, format)
End Using
End If
End Sub
End Class
然后在您的主要表单中:
Then in your main form:
Private MltLnTxtBxWrMrk As New MultilineTextBoxWaterMark
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MltLnTxtBxWrMrk.Location = New Point(100, 30) 'whatever you want
MltLnTxtBxWrMrk.Width = 300 'whatever you want
MltLnTxtBxWrMrk.Height = 100 'whatever you want
MltLnTxtBxWrMrk.BorderStyle = BorderStyle.Fixed3D 'whatever you want
MltLnTxtBxWrMrk.Multiline = True
Me.Controls.Add(MltLnTxtBxWrMrk)
End Sub
我认为它有效.谢谢