Click here to Skip to main content
15,884,047 members
Articles / Programming Languages / C#
Tip/Trick

TextBox with Placeholder

Rate me:
Please Sign up or sign in to vote.
4.85/5 (38 votes)
2 May 2018CPOL2 min read 177K   13.9K   59   38
Extended TextBox with placeholder

Introduction

In many cases, a TextBox with an easy Placeholder property would be very helpful especially when you want the user to filter a ListView or ListBox by search terms.

So, I never found a really good one. I know there exists a very easy method with only one SendMessage method, but I don't like it because the placeholder is hard to differentiate with the actually typed text and I don't like these message things very much, too many things can go wrong.

Now I created my own control and my destination is that it is very easy to use.

Using the Code

Add the PlaceholderTextBox.cs to your project and build it. You can add it with the designer now.

The difference to the usual TextBox is it that there are three new properties:

  • PlaceholderText: It's not hard to guess what this property does. It defines the Placeholder text which will get displayed if the TextBox is empty.
  • IsPlaceholderActive: Through this property, you can always check if the textbox shows the placeholder or real text at the moment.

PlaceholderText is accessible with the designer, IsPlaceholderActive is not!

Besides, there is the new method Reset(). This will return the TextBox to the start state.

The Text property is not accessible with the designer. That's to keep the standard. The placeholder should always be seen before you type any text in the TextBox.

Points of Interest

It's a very well written code. I recommend you read it, there are many comments and maybe you have a suggestion.

I hope you like my control and when you have any suggestions or have found a bug, please let me know!

History

v1.6

  • "Select all" in Windows default context menu does not select the placeholder anymore
  • TextLength returns 0 if placeholder is active
  • Minor code improvements

v1.5

  • Fixed behavior with pressing Ctrl+A while placeholder is active
  • MaxLength working now
  • Fixed crashes if setting Text programmatically

v1.4

v1.3

  • Fixed bug: Font can be changed now - Thanks to Member 11133660
  • Improved internal logic
  • Removed IsItalics
  • Renamed PlaceholderInsideChanged to PlaceholderActiveChanged

v1.2

  • Improved internal logic
  • Removed sealed
  • Added Placeholder category to designer for better overview
  • Fixed some comments

v1.1

  • Added PlaceholderInsideChanged event
  • Fixed bug that new MouseDownEvents never occur
  • Prevents user to go through placeholder with arrow keys

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Germany Germany
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
BugThe 'PasswordChar' property spoils the placeholder text Pin
Tudor.sta20-Aug-18 12:07
Tudor.sta20-Aug-18 12:07 
GeneralRe: The 'PasswordChar' property spoils the placeholder text Pin
Tudor.sta20-Aug-18 13:37
Tudor.sta20-Aug-18 13:37 
SuggestionPlaceholder / prompt text? Pin
RenniePet1-Jun-18 16:09
RenniePet1-Jun-18 16:09 
QuestionActs the same as MFC's CEdit::SetCueBanner( )? Pin
Member 105465763-May-18 20:09
Member 105465763-May-18 20:09 
AnswerRe: Acts the same as MFC's CEdit::SetCueBanner( )? Pin
Andiiiii4-May-18 23:42
Andiiiii4-May-18 23:42 
GeneralRe: Acts the same as MFC's CEdit::SetCueBanner( )? Pin
Member 105465766-May-18 21:09
Member 105465766-May-18 21:09 
BugNot really a bug but... Pin
2D35B4DBD865EAE2282628-Apr-18 23:31
2D35B4DBD865EAE2282628-Apr-18 23:31 
GeneralRe: Not really a bug but... Pin
chrisbray30-Apr-18 3:56
chrisbray30-Apr-18 3:56 
GeneralRe: Not really a bug but... Pin
chrisbray30-Apr-18 4:17
chrisbray30-Apr-18 4:17 
GeneralRe: Not really a bug but... Pin
chrisbray30-Apr-18 5:43
chrisbray30-Apr-18 5:43 
PraiseRe: Not really a bug but... Pin
2D35B4DBD865EAE2282630-Apr-18 5:50
2D35B4DBD865EAE2282630-Apr-18 5:50 
GeneralRe: Not really a bug but... Pin
chrisbray30-Apr-18 6:06
chrisbray30-Apr-18 6:06 
GeneralRe: Not really a bug but... Pin
2D35B4DBD865EAE2282630-Apr-18 8:50
2D35B4DBD865EAE2282630-Apr-18 8:50 
GeneralRe: Not really a bug but... Pin
Andiiiii2-May-18 5:36
Andiiiii2-May-18 5:36 
Questionlost MaxLength feature Pin
tao841-Mar-18 16:18
tao841-Mar-18 16:18 
AnswerRe: lost MaxLength feature Pin
chrisbray30-Apr-18 6:02
chrisbray30-Apr-18 6:02 
GeneralRe: lost MaxLength feature Pin
Andiiiii2-May-18 3:45
Andiiiii2-May-18 3:45 
QuestionNice, but ... Pin
Alex (RSA)16-Feb-18 0:16
professionalAlex (RSA)16-Feb-18 0:16 
QuestionDemo is not Downloading Pin
Member 1320815325-Aug-17 20:40
Member 1320815325-Aug-17 20:40 
BugBug 3 - fails if CharacterCasing set to Upper or Lower, but Place Holder Text is in another case. Pin
VBNetHack2-Jul-17 3:52
VBNetHack2-Jul-17 3:52 
GeneralRe: Bug 3 - fails if CharacterCasing set to Upper or Lower, but Place Holder Text is in another case. Pin
Andiiiii15-Feb-18 5:08
Andiiiii15-Feb-18 5:08 
Thanks for your report.

I already fixed it with using Substring instead of removing the placeholder with string matching.

I just uploaded the updated code.
Questionbug 2 Pin
Member 1241201717-Jun-17 9:44
Member 1241201717-Jun-17 9:44 
AnswerRe: bug 2 Pin
Andiiiii15-Feb-18 5:07
Andiiiii15-Feb-18 5:07 
Questionbug Pin
Member 1241201717-Jun-17 0:47
Member 1241201717-Jun-17 0:47 
QuestionOther Objects... like MaskedEditBox and Combobox. Pin
Eagles_Power24-Jan-17 2:45
Eagles_Power24-Jan-17 2:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.