Create masked textbox but hide masked characters when empty - vb.net

I want to validate text taken from a textbox and display it in a specific format.
I have tried using a MaskedTextBox, but when the textbox is empty it shows the empty blank lines (underscores) in the text box.
How can I avoid that and show the masked textbox like a simple empty (still masked) textbox?
Also, I want data like csc-(somenumber). Can I add some random number automatically after 'csc-' characters?

The reason the masked text box is showing a blank line is because underscore "_" is the default prompt character for a masked text box. You have two options for changing this.
If you want the prompt to be visible while the user is editing the text but hidden otherwise, set the HidePromptOnLeave property to true.
MaskedTextBox1.HidePromptOnLeave = True
If you never want to have the underscore as the prompt character, you can change the PromptChar property to be a space " ". You cannot make the PromptChar nothing, the field must have a value.
MaskedTextBox1.PromptChar = " "

For your textbox, use the MaskedTextBox class.
http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx
For getting a random number
Dim s = "csc-" & New Random().Next(1000, 10000).ToString

Related

Insert/replace string in existing text form field in Word (VBA)

So I'm trying to create a conditional dropdown in Word. I've used a Legacy Drop-Down Form Field with multiple options.
What I want to happen is when one of the options is selected from the dropdown (and then I guess you have to Tab to enter it...), the Legacy Text Form Field below, that has a simple default text, should populate with a new string from the case statement.
Things that I've already done/got working:
the drop down is working, and on exit it runs a macro
case statement is written out
the result of the case statement is in a variable (string type), let's call it StringVar
can pull the text form field's text (default text) with ActiveDocument.FormFields("TextBox").Result
What I figure out, however, is how to replace the default text in the already existing Text Form Field with the case statement's string variable text.
I've tried
ActiveDocument.FormFields("TextBox").Result = StringVar
but it doesn't change anything inside the text form field. The default text is still there.
So I can answer my own question after pondering and being hit with an "oh, duh" moment.
I had unprotected the document (ActiveDocument.Unprotect Password:="") in order to do this:
ActiveDocument.Content.InsertAfter Text:=("This is my text")
because I was wondering if I was grabbing the right string.
Turns out,
ActiveDocument.FormFields("TextBox").Result = StringVar
DOES work. BUT the file has to be protected (filling in forms) for it to replace the string in the text form field. Otherwise, nothing shows up even though the result had indeed been updated. Fancy that.

How do I make my program in VB show the number of letters in a text box, into a tab box?

I'm making a program whereby it takes text and 'encrypts' it. I managed to do the caeser cypher part, but another part was to get the string value in the encrypted text, and display the number of characters in it. I decided to get the text from a text box, and display it in a tabcontrol box. What would be the code to get the values from the textbox, list what they are, and how many times they appear in the text box?
use this code below; will gets you the character length in your textbox
TextBox1.TextLength

Remove last character from textbox on button click

I have a textbox, textbox1, whose ReadOnly property is set to true. It is somewhat like an on-screen keyboard. When the user presses a button, I can add characters by using:
Textbox1.Text = Textbox1.Text & A
But, when the user wants to remove the text, which should work exactly like the Backspace key, the last character should be removed from the textbox.
I am ready to give up normal textbox and use richtextbox if there is any way ahead with the rich one.
How to remove last character of a textbox with a button?
The previously suggested SubString method is what I would have posted too. However, there is an alternative. The Remove method works by removing every character after the given index. For instance:
TextBox1.Text = Textbox1.Text.Remove(TextBox1.Text.Length - 1)
You can use the SubString method to get all but the last character, for instance:
TextBox1.Text = TextBox1.Text.SubString(0, TextBox1.Text.Length - 1)
The above functions such as Substring and Remove are not executed in Visual Basic 6 (or earlier versions). I recommend to use Mid function.
For instance,in this example last character of Hello is deleted and rest of word is saved in Text1
Text1=Mid("Hello",1, Len("Hello") - 1)
and result is Text1=Hell

hiding a textbox if text value is null

I have done a research on this but can't seem to find a convincing answer. Here is the scenario. I am doing a reporting application in rdlc. I am getting field values from my database and displaying in the text boxes. Please see below what I display in the report
Textbox1
Textbox2
Textbox3
In case the value of text box 2 or any other text box is null, I don't display the same using the formular
iif(fields!Textbox2.value is nothing, false, true)
for example this is what I get
Textbox1
Textbox3
with a space between textbox1 and textbox3. I dont want this space to appear incase the value is null. How can I handle this? Thank you
If you're using a simple TextBox you have to set Visibility and CanShrink property.
If you're using a TextBox in a Table/Tablix you have to set Visibility property of the entire TableRow containing the TextBox.

setting textbox text equal to textbox text on a different form?

is it possible in design mode to set the textbox text property to the text property of a textbox in a different form in vb.net?
You could use the ApplicationSettings.PropertyBinding property of the text box to accomplish what you want. If you sort the text box properties A-Z, it should be the first one in the list in parenthesis. Just create a shared application value and it will apply to each control that binds to the value.