Je veux séparer les chiffres avec une virgule dans la zone de texte dans Winforms. J'ai écrit cette fonction et ça marche: mais le problème est que lorsque je commence à taper le numéro dans la zone de texte, le curseur de la souris arrive à gauche du texte. Mais je veux que ce soit normal et placé à droite du nombre. P> Pour résoudre ce problème, j'ai utilisé ce code: P> private void txtPayani_TextChanged(object sender, EventArgs e)
{
txtPayani.Text = setComma(payani);
txtPayani.Select(txtPayani.Text.Length, 0);
}
4 Réponses :
Vous devez utiliser textbox.caretindex code> pour définir la position d'insertion afin que lorsque vous modifiez textbox.text code> La position d'insertion ne change pas. Vous ne voulez probablement pas utiliser textbox.select () code>. Code non testé ci-dessous: private void txtPayani_TextChanged(object sender, EventArgs e)
{
int Position = txtPayani.CaretIndex;
int Length = txtPayani.Text.Length;
txtPayani.Text = setComma(payani);
if(Position == Length) // If it was at the end, keep it there
{
txtPayani.CaretIndex = txtPayani.Text.Length;
}
else // Else, keep it in the same spot
{
txtPayani.CaretIndex = Position;
}
}
Si je n'écris pas "SELECT", le curseur va à gauche et c'est mauvais. Si j'utilise "SELECT", le curseur va écrire, mais si je retire un chiffre du milieu, le curseur est à nouveau aller au bout du texte. et je veux que le curseur reste à cet endroit.
J'ai supposé (peut-être mal) que vous utilisiez WPF. Le cadre UI que vous utilisez serait des informations utiles.
application WinForm
envisagez de faire une zone de texte personnalisée qui contient une valeur Par exemple, lorsqu'il n'est pas mis en contact, un tel contrôle personnalisé avec et lorsque vous onglet (ou cliquez sur) à l'intérieur, il passe en mode édition comme si vous définissez le numéro brut. p> voir ci-dessous le code que j'ai utilisé pour cela: p> double code> et une chaîne formatage et affiche le texte formaté lorsque la zone de texte n'a pas l'accent et la valeur réelle Lorsque le texte est édité. .formatting = "n" code> pour la mise en forme va ressembler à ceci: p>
p>
a> p>
J'utilise ceci:
private void txtPayani_TextChanged(object sender, EventArgs e)
{
if (txtPayani.Text.Length > 0)
{
txtPayani.Text = Convert.ToDouble(txtPayani.Text).ToString("N0");
txtPayani.SelectionStart = txtPayani.Text.Length;
}
}
Pouvez-vous élaborer ce que vous voulez accomplir? Quelle est votre variable code> payani code>? Quels chiffres voulez-vous séparer? Où les chiffres seront-ils utilisés? Voulez-vous utiliser
, code> comme séparateur décimal pour votre entrée?Payani est mon double var. Séparez trois chiffres et utilisation, pour séparateur.
S'il vous plaît Modifier Votre question et ajoutez une balise pour le cadre UI que vous utilisez (
WinForms code>, < Code> WebForms code>,WPF code>,uwp code>, etc.).Pourquoi voulez-vous séparer les chiffres? Quel type de valeur affichez-vous? Monnaie ou numéros standard?
Il est plus facile d'utiliser Windows Formulaires Reliure de données < / a>. Il s'occupe de toutes les conversions de nombres de / sur la chaîne, de toutes les formatage et de la validation de la saisie de base (c'est-à-dire déshonquée en saisissant des lettres lors de la saisie de numéros).
Je pense que ce que vous demandez est de savoir comment créer une zone de texte contenant une valeur numérique, mais affiche un texte formaté de la valeur numérique jusqu'à ce que la commande soit en mode édition.