winforms
Casella di testo
Ricerca…
Completamento automatico da una raccolta di stringhe
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);
Ciò si completerà automaticamente come l'utente prova a digitare G o L.
AutoCompleteMode.SuggestAppend
visualizzerà entrambi un elenco di valori suggeriti e digiterà automaticamente la prima corrispondenza, Append
only e Suggest
only sono disponibili.
Consenti solo cifre nel testo
textBox.KeyPress += (sender, e) => e.Handled = !char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar);
Ciò consentirà solo l'uso di cifre e caratteri di controllo nel TextBox
, altre combinazioni sono possibili utilizzando lo stesso approccio di impostare la proprietà Handle
su true per bloccare il testo.
L'utente può ancora copiare / incollare caratteri indesiderati, quindi dovrebbe essere presente un controllo aggiuntivo su TextChanged
per pulire l'input:
textBox.TextChanged += (sender, e) => textBox.Text = Regex.Match(textBox.Text, @"\d+").Value
In questo esempio viene utilizzata un'espressione regolare per filtrare il testo.
NumericUpDown dovrebbe essere preferito per i numeri quando possibile.
Come scorrere fino alla fine
textBox.SelectionStart = textBox.TextLength;
textBox.ScrollToCaret();
Applicando lo stesso principio, SelectionStart
può essere impostato su 0
per scorrere verso l'alto o verso un numero specifico per passare a un carattere specifico.
Aggiunta di un segnaposto alla casella di testo
Questo codice posiziona il testo del suggerimento al caricamento del modulo e lo manipola come segue:
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