this tip "Enter your full name here" on the textbox is usally useful to the user and avoid some confusion.
All we need to do, is to send this message to the handle of the control, via SendMessage Api.
Declare Unicode Function SendMessageW Lib "User32.dll" (ByVal Hwnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Boolean, ByVal lParam As String) As Boolean Const EM_SETCUEBANNER = 5377 Function SetCueText(ByRef Textbox1 As TextBox, ByVal CueText As String, Optional ByVal ShowOnFocus As Boolean = False) As Boolean Return SendMessageW(Textbox1.Handle, EM_SETCUEBANNER, ShowOnFocus, CueText) End Function
Usage :
Call SetCueText wih these parameters: :
Textbox1 : the textbox control that you want to add a cue text to it. (Textbox)
CueText : The Tip that will show on the textbox (String)
ShowOnFocus : Set to true if you want the cue text visible even if the textbox has the focus (boolean)
Return value : returns true if it succeeds, otherwise it returns false.
Even Better, we can extend the textbox control, and add a property Called "CueText", just like this :
Imports System.Windows.Forms Public Class mTextBox Inherits TextBox Declare Unicode Function SendMessageW Lib "User32.dll" (ByVal Hwnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Boolean, ByVal lParam As String) As Boolean Const EM_SETCUEBANNER = 5377 Private _CueText As String Private _CueFocus As Boolean Public Property CueText() As String Get Return _CueText End Get Set(ByVal value As String) _CueText = value If Me.Handle <> IntPtr.Zero Then SendMessageW(Me.Handle, EM_SETCUEBANNER, New IntPtr(CInt(_CueFocus)), _CueText) End Set End Property Property CueTextFocus() As Boolean Get Return _CueFocus End Get Set(ByVal value As Boolean) _CueFocus = value CueText = CueText End Set End Property End Class
What we did, we created a control that inherits from the usual textbox, and added two properties that allow us to get and set the cue text, and also whether to show on focus or not.
2 comments:
can you do combobox in listview? :D
Actually, it's possible, in two ways.
First method, is to "override" the paint event in the listview class so you can "draw" a progress bar instead of text in the desired field. it is creating a custom listview.
the second method is to add a progressbar control to the controls of the listview (progressbar becomes child control of the listview) and keep an eye on the column resize event, scrolling, ect.. so you can move and resize the progressbar in the correct place where is should be. i find this a little laggy hack, but it does the job. i hope i explained in clear simple way.
Post a Comment