winforms
Textruta
Sök…
Automatisk slutförande från en samling strängar
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);
Detta kommer automatiskt att fylla i när användaren försöker skriva G eller L.
AutoCompleteMode.SuggestAppend
kommer båda att visa en lista med förslag på värden och det kommer automatiskt skriver den första matchen, Append
bara och Suggest
endast finns också.
Tillåt endast siffror i texten
textBox.KeyPress += (sender, e) => e.Handled = !char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar);
Detta tillåter endast användning av siffror och kontrolltecken i TextBox
, andra kombinationer är möjliga med samma tillvägagångssätt för att ställa in Handle
egenskapen till true för att blockera texten.
Användaren kan fortfarande kopiera / klistra in oönskade tecken så en ytterligare kontroll bör finnas på TextChanged
att rensa ingången:
textBox.TextChanged += (sender, e) => textBox.Text = Regex.Match(textBox.Text, @"\d+").Value
I det här exemplet används ett regelbundet uttryck för att filtrera texten.
NumericUpDown bör föredras för siffror när det är möjligt.
Hur man bläddrar till slutet
textBox.SelectionStart = textBox.TextLength;
textBox.ScrollToCaret();
Med samma princip kan SelectionStart
ställas in på 0
att bläddra till toppen eller till ett specifikt nummer för att gå till ett specifikt tecken.
Lägga till en platshållare i textrutan
Den här koden placerar antydningstexten vid formbelastning och manipulerar den på följande sätt:
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