2010-07-29 4 views
0

C#: Par zone de texte par défaut accepte un nombre n d'entrées,comment limiter la longueur des entrées dans la boîte de texte à sa largeur

Je veux limiter les entrées à sa largeur

Y at-il des biens Dans la zone de texte par laquelle je peux réaliser cela,

+0

Pourquoi voudriez-vous, sauf si vous utilisez une police à largeur fixe? La lettre i est beaucoup plus étroite que la lettre W dans les polices à largeur proportionnelle. – BoltClock

+0

basé sur des moyens de largeur? – anishMarokey

+0

Parlez-vous ASP.NET, WPF ou WinForms? – kbrimington

Répondre

1

Vous pouvez calculer la largeur du texte à tirer et si elle dépasse la largeur de zone de texte puis retour .

HERE vous pouvez trouver un bon exemple.

0

Non, pour cela, vous devrez calculer manuellement le nombre maximum de caractères que vous pouvez saisir par la largeur de la zone de texte. Vous devrez également prendre en considération la police et la taille de police aussi

1

par défaut il accepte seulement 32767 de caractères.

Vous pouvez définir la propriété MaxLength de la zone de texte dans le textbox property

Espoir vous utilisez Windows Forms

1

En supposant WinForms, essayez ceci:

private bool textExceedsWidth; 

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    textExceedsWidth = false; 

    if (e.KeyCode == Keys.Back) 
     return; 

    Size textSize = TextRenderer.MeasureText(textBox1.Text, textBox1.Font); 

    if (textBox1.Width < textSize.Width) 
     textExceedsWith = true; 
} 

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (textExceedsWidth) 
     e.Handled = true; 
} 
0

Je sais que cette question est un peu vieux, mais à une recherche c'est une extension de la réponse George. Cela fonctionne avec Ctrl + v, coller dans le menu contextuel et taper depuis le clavier.

private string oldText; 

private void txtDescrip_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    oldText = txtDescrip.Text; 
} 

private void txtDescrip_TextChanged(object sender, EventArgs e) 
{ 
    Size textSize = TextRenderer.MeasureText(txtDescrip.Text, txtDescrip.Font); 

    if (textSize.Width > txtDescrip.Width)//better spacing txtDescrip.Width - 4 
     txtDescrip.Text = oldText; 
    else 
     oldText = txtDescrip.Text; 
} 
Questions connexes