Je dois limiter le nombre de caractères à coller dans une zone de texte multiligne. P>
Disons que ceci est ma chaîne à coller dans la zone de texte: p>
Bon jour Mesdames et Gents! de
je veux juste savoir
P> blockQuote>Si cela est possible, veuillez vous aider. P>
La règle est de 10 caractères maximum par ligne est de 10, les lignes maximales sont 2. Appliquer la règle, le texte collé ne devrait être que celui-ci: P>
Bon jour L de
Je viens de wan p> blockQuote>
5 Réponses :
Vous pouvez y parvenir de la manière suivante. Ensemble dans l'événement de changement de texte effectuez les éléments suivants P> Longueur maximale code> de la zone de texte comme 22
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length == 10)
{
textBox1.AppendText("\r\n");
}
}
Merci pour vos commentaires, mais vous voyez, j'ai déjà une restriction à ce sujet (lorsque l'utilisateur tente d'entrer normalement comme non pas collé). Mon problème est maintenant comment capturer la pâte ...
@Nitesh - Votre solution ne fonctionne pas dans le cas du colle, car lors du colonage de la longueur du texte passe de 0 immédiatement à la taille du texte informatique collé. Ce n'est jamais exactement 10, l'ajout de la nouvelle ligne ne se produit jamais. Cela ne fonctionne pas non plus que si l'utilisateur est en 2 caractères, hits entrez, puis Types 2 caractères et hits entrez.
Il n'y a pas automatique quoi faire cela. Vous devrez gérer l'événement textchanged code> sur la zone de texte et analyser manuellement le texte modifié pour la limiter au format requis.
private const int MaxCharsPerRow = 10;
private const int MaxLines = 2;
private void textBox1_TextChanged(object sender, EventArgs e) {
string[] lines = textBox1.Lines;
var newLines = new List<string>();
for (int i = 0; i < lines.Length && i < MaxLines; i++) {
newLines.Add(lines[i].Substring(0, Math.Min(lines[i].Length, MaxCharsPerRow)));
}
textBox1.Lines = newLines.ToArray();
}
Vous pouvez attraper le message wm_paste code> (envoyé à votre
textbox code>) pour traiter vous-même:
Merci pour cela mais changer le contrôle (ou la zone de texte) sera une grande douleur pour moi ...
@Jackfrost pas vraiment. Il suffit d'ajouter une classe distincte dans votre projet. Vous pouvez réutiliser cette classe. C'est la solution la plus propre.
Pourquoi ne travaillez-vous pas sur les données du presse-papiers pour y parvenir. Ci-dessous est un petit exemple. Collez maintenant les données que vous aimez, les données doivent être coupées à la longueur maximale autorisée par votre programme. P> P>
private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text.Length == 10) { textBox1.MaxLength = 10; //MessageBox.Show("maksimal 10 karakter"); } }
Comment cela aide-t-il mieux que les autres solutions déjà données?
Voulez-vous permettre à l'utilisateur d'utiliser des touches courtes
ctrl + v code>?
Oui, toute forme de pâte (Ctrl + V, clic droit + coller, Maj + insert) est autorisée.