winforms
Zone de texte
Recherche…
Complétion automatique à partir d'une collection de chaînes
var source = new AutoCompleteStringCollection();
// Add your collection of strings.
source.AddRange(new[] { "Guybrush Threepwood", "LeChuck" });
var textBox = new TextBox
{
AutoCompleteCustomSource = source,
AutoCompleteMode = AutoCompleteMode.SuggestAppend,
AutoCompleteSource = AutoCompleteSource.CustomSource
};
form.Controls.Add(textBox);
Cela va se compléter automatiquement lorsque l'utilisateur essaie de taper G ou L.
AutoCompleteMode.SuggestAppend
affichera tous les deux une liste de valeurs suggérées et il saisira automatiquement la première correspondance, Append
uniquement et Suggest
uniquement sont également disponibles.
Autoriser uniquement les chiffres dans le texte
textBox.KeyPress += (sender, e) => e.Handled = !char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar);
Cela permettra uniquement l'utilisation de chiffres et de caractères de contrôle dans la zone de TextBox
, d'autres combinaisons sont possibles en utilisant la même approche pour définir la propriété Handle
sur true pour bloquer le texte.
L'utilisateur peut toujours copier / coller des caractères indésirables afin qu'une vérification supplémentaire soit effectuée sur le TextChanged
pour nettoyer l'entrée:
textBox.TextChanged += (sender, e) => textBox.Text = Regex.Match(textBox.Text, @"\d+").Value
Dans cet exemple, une expression régulière est utilisée pour filtrer le texte.
NumericUpDown devrait être préféré pour les nombres si possible.
Comment faire défiler jusqu'à la fin
textBox.SelectionStart = textBox.TextLength;
textBox.ScrollToCaret();
En appliquant le même principe, SelectionStart
peut être défini sur 0
pour faire défiler vers le haut ou vers un numéro spécifique pour accéder à un caractère spécifique.
Ajout d'un espace réservé à la zone de texte
Ce code place le texte de conseil au chargement du formulaire et le manipule comme suit:
C #
private void Form_load(object sender, EventArgs e)
{
textBox.Text = "Place Holder text...";
}
private void textBox_Enter(object sender, EventArgs e)
{
if(textBox.Text == "Place Holder text...")
{
textBox.Text = "";
}
}
private void textBox_Leave(object sender, EventArgs e)
{
if(textBox.Text.Trim() == "")
{
textBox.Text = "Place Holder text...";
}
}
VB.NET
Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
textBox.Text = "Place Holder text..."
End Sub
Private Sub textBox_GotFocus(sender as Object,e as EventArgs) Handles textBox.GotFocus
if Trim(textBox.Text) = "Place Holder text..." Then
textBox.Text = ""
End If
End Sub
Private Sub textBox_LostFocus(sender as Object,e as EventArgs) Handles textBox.LostFocus
if Trim(textBox.Text) = "" Then
textBox.Text = "Place Holder text..."
End If
End Sub