3

我知道这很奇怪,但是有没有办法在 VB6 中模拟占位符文本功能?如果没有,有没有人知道一个好的 OCX 控件我可以找到可以做到这一点的地方?我确信它可以通过一组功能进行编程来做到这一点,只是寻找已经完成的事情。

我要询问的占位符不是 VB6 中的“格式”,而是您在网络表单上看到的文本,而不是例如标签。

文本框内的文本,告诉您该框中的信息,或提供您希望用户输入该特定框的信息的示例。

一如既往地非常感谢任何帮助。

4

2 回答 2

6

听起来你想要提示横幅。这些也适用于 ComboBox 控件。

Private Const CBM_FIRST As Long = &H1700&
Private Const CB_SETCUEBANNER As Long = CBM_FIRST + 3
Private Const ECM_FIRST As Long = &H1500&
Private Const EM_SETCUEBANNER As Long = ECM_FIRST + 1

Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

Private Sub SetCueBannerTXT(ByVal TextBox As TextBox, ByVal CueText As String)
    SendMessage TextBox.hWnd, EM_SETCUEBANNER, 0, StrPtr(CueText)
End Sub

Private Sub SetCueBannerCBO(ByVal ComboBox As ComboBox, ByVal CueText As String)
    SendMessage ComboBox.hWnd, CB_SETCUEBANNER, 0, StrPtr(CueText)
End Sub

注意要使用此 API,您必须提供一个清单,指定 Comclt32.dll 版本 6.0。

于 2012-11-13T21:55:28.303 回答
3

让我们看看我是否理解你想要的正确。您想要一个显示(例如):“名字”的文本框向用户显示要输入的内容?

这可以通过在设计模式中将文本值设置为“名字”来实现。然后,在 GotFocus 事件中,删除里面的文本,给用户一个空白文本框来输入他们的信息。

为了使其更加用户友好,您可以在它只是一个标签时使用灰色文本,在用户输入时使用黑色文本。您还可以测试文本颜色,以便在用户重新输入文本框时不会删除用户信息。

于 2012-11-13T20:28:59.640 回答