在我的應用程序中,我有一個用於輸入用戶名的文本框。如果文本爲空,我想在同一個文本框中以灰色顯示「在此輸入用戶名」。文本框中是否有這樣的屬性?像Firefox瀏覽器,如果URL字段爲空,將顯示「轉到網站」在灰色如何在VB .NET中設置TextBox提示標籤?
感謝
在我的應用程序中,我有一個用於輸入用戶名的文本框。如果文本爲空,我想在同一個文本框中以灰色顯示「在此輸入用戶名」。文本框中是否有這樣的屬性?像Firefox瀏覽器,如果URL字段爲空,將顯示「轉到網站」在灰色如何在VB .NET中設置TextBox提示標籤?
感謝
嘗試沿着這一線的東西:
(onkeyup)
If TextBox.Text = "" Then
TextBox.Text = "Enter username here..."
TextBox.ForeColor = <your chosen color here>
Else
TextBox.ForeColor = <normal color here>
End If
一個糟糕的主意。不處理鼠標點擊(右鍵單擊 - >上下文菜單 - >剪切不應該可用),'Text'將這個佔位符作爲*實際文本*返回(你希望它返回'string.Empty')等等。這有很多缺點。 –
感謝您的反饋。我不打算提供涵蓋所有用例的解決方案,因爲關於如何涵蓋每個邊緣案例的解釋將會太長。我的意圖只是讓皇家朝正確的方向推進,即。每當文本(可能)發生變化時更改元素ForeColor的想法。 –
謝謝,但有沒有這方面的任何財產。我不想按照Dan Abramov編寫的代碼來編寫這個bcz(如果財產不存在,我會在文本框旁邊添加標籤) –
假設你的意思的Windows表格,看看this question。
基本上,你需要調用一個WinAPI SendMessage
函數用於控制EM_SETCUEBANNER
的值。
我真的很喜歡CodeProject.com此解決方案:http://www.codeproject.com/KB/edit/TextBoxHint.aspx?display=Print
什麼是真正好的是華而不實的淡出在他/她的文字進入該領域的用戶類型。這很容易實現,看起來不錯。
我知道這可能是一個古老的線索,但我想我會回答它,以防其他人偶然發現它。
首先聲明以下(您可能需要導入System.Runtime.InteropServices
)
<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
然後調用以下(根據需要進行更改):
SendMessage(Me.textbox1.Handle, &H1501, 0, "Enter User name here")
你也可以繼承TextBox和重寫的WndProc
Public Class TextBoxPlaceHolder
Inherits TextBox
Private Const WM_PAINT As Int32 = &HF
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_PAINT AndAlso Me.TextLength = 0 Then
Using g = Me.CreateGraphics
g.DrawString("Enter User name here", Me.Font, Brushes.Gray, 1, 1)
End Using
End If
End Sub
End Class
謝謝!這是偉大的,我想多次使用它,所以我創建了這個類的屬性: 私人提示作爲字符串 公共只寫屬性HintText()作爲字符串 集(值作爲字符串) 提示=值 結束設定 End Property 然後我覆蓋上面的硬編碼文本: g.DrawString(提示,Me.Font,Brushes.Gray,1,1) 從調用形式,我設置提示使用: Form1.TextBoxPlaceHolder1.HintText =「輸入所需的名稱」 – cardmagik
它是WPF還是WinForms? –
可能重複[如何用默認文本填充空文本框?](http://stackoverflow.com/questions/5178247/how-do-i-fill-an-empty-textbox-with-default-text) ,[WinForms中的水印文本框](http://stackoverflow.com/questions/4902565/watermark-textbox-in-winforms/) –