user6484212
user6484212

Reputation: 29

Prevent printing spaces in C# TextBox

I want to make a TextBox that doesn't allow entering spaces. I disabled typing spaces with the keyboard:

void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Space)
    {
        e.Handled = true;
    } 
}

But if the user copies a string with spaces like "Hello world", he can paste it into the TextBox and there will be spaces in it.

Upvotes: 1

Views: 2372

Answers (3)

TheQuestioner
TheQuestioner

Reputation: 722

you can add a TextChanged Event Handler for your TextBox and add below code in that TextChanged event:

TextBox1.Text = TextBox1.Text.Replace(" ", "");

Upvotes: 3

Sami
Sami

Reputation: 3800

A better control approach

 private void textBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control) {                
            removeSpaces();
        }
        //Handle Ctrl+Ins
        if (e.KeyCode == Keys.Control && e.KeyCode == Keys.Insert)
        {
            removeSpaces();
        } 
    }

private void removeSpaces()
    {
        textBox.Text = textBox.Text.Replace(" ", string.Empty);
    }

// To control Mouse Right click

private void textBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                textBox1.ContextMenu = new ContextMenu();
            }
        }

SIMPLE Solution for all

private void textBox1_TextChanged(object sender, EventArgs e)
    {
        textBox1.Text = textBox1.Text.Replace(" ", string.Empty);
    }

Upvotes: 2

Elham
Elham

Reputation: 31

A simple way is removing white space after entering data. Like:

txt_Box.Text = txt_Box.Text.Replace(" ","");

Upvotes: 0

Related Questions