如何在ASP.NET VB项目中获取控件的句柄?

时间:2016-01-02 14:38:20

标签: asp.net vb.net webforms

我想将Cue / Watermarks添加到我的ASP:TextBox控件以获得更好的用户体验,并且遇到了非常好的CueProvider,它具有this VB调整版本,遗憾的是我无法编译。

我的课程如下

#Region "Imports"
Imports System.Runtime.InteropServices
#End Region

Public Class Watermark

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
Private Shared Function SendMessage(ByVal hWnd As HandleRef,
                                    ByVal Msg As UInteger,
                                    ByVal wParam As IntPtr,
                                    ByVal lParam As String) As IntPtr
End Function

Public Shared Sub [Set](ByVal ctl As Control, ByVal hintText As String)

    Const EM_SETCUEBANNER As Int32 = &H1501

    Dim retainOnFocus As IntPtr = New IntPtr(1)
    Dim msg As Int32 = EM_SETCUEBANNER

    SendMessage(New HandleRef(ctl, ctl.Handle), msg, retainOnFocus, hintText)

End Sub

End Class

编译失败在New HandleRef(ctl, ctl.Handle)上,第二个参数显然不是有效属性。

如何获取传入UI控件的Windows句柄?

1 个答案:

答案 0 :(得分:2)

您找到的代码适用于Windows窗体,但您正在开发ASP.NET Web窗体应用程序。因此不合适。您无法在ASP.NET中获取窗口句柄。

我相信你所追求的是占位符。

$VAR1 = [
          'C:',
          'Users',
          'goudarsh',
          'Desktop',
          'Perl_test_scripts',
          'sample'
        ];

或者,如果您需要服务器控件,

<input type="text" placeholder="First Name" />