2016-05-20 3 views
0
private void inputBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     stringScan(); 
     var regex1 = new Regex(@"[^+^\-^\b^\r\n]"); 
     var regex2 = new Regex(@"[^0-9^+^\-^/^*^#^\b^\r\n]"); 

     if (ListBox.Items.Count == 0 && string.IsNullOrWhiteSpace(inputBox.Text)) 
     { 
      if (regex1.IsMatch(e.KeyChar.ToString())) 
      { 
       e.Handled = true; 
       toolTip1.Show("Plus or minus first then followed by numbers.", inputBox, 1500); 

      } 
     } 
     else 
     { 
      if (regex2.IsMatch(e.KeyChar.ToString())) 
      { 
       e.Handled = true; 
      } 
     } 

    } 

    public void stringScan() 
    { 
     char last_char = inputBox.ToString()[inputBox.ToString().Length - 1]; 
     Console.WriteLine(last_char); 
    } 

Wie kann ich den letzten Buchstaben/die letzte Zahl einer Zeichenfolge erhalten ?. Es ist wirklich schwer zu erklären, also werde ich ein paar Screenshots zeigen.C# TextBox Wie bekomme ich den letzten Buchstaben einer Zeichenkette?

This is the input

and this is the output

sollte der Ausgang "0" nicht "1" zeigen. Es zeigt immer die "Vorschau zuletzt" und nicht die letzte, die ich in das Textfeld eintippte.

+0

try '$' ... ............ –

+0

In einer einzelnen Zeile Textbox gibt es keinen Zeilenvorschub am Ende – BugFinder

+0

Gibt 'myString [myString.Length-1]' 'das letzte Zeichen zurück? – x13

Antwort

4

Denken Sie daran, wenn das Ereignis inputBox_KeyPress ausgelöst wird, ist der eingegebene Schlüssel noch nicht hinzugefügt. Verwenden Sie auch keine Regex dafür. Es wird zu kompliziert sein.

Versuchen Sie das TextChanged Ereignis.

0

Textfeld Schlüssel zu ändern jedes Mal, u den Inhalt des Textfeldes

So wird u geben Sie für jeden Wert ändern ausgeführt wird u die Zeichenfolge Scan

Dies begrenzt werden kann anrufen, wenn u wissen, was Länge der Text wird

0

Was Sie versuchen, diese:

public void stringScan() 
{ 

    String last_char = inputBox.ToString(); 
    Console.WriteLine(last_char[last_char.Length-1]); 
} 
+0

Wie macht es Unterschied? –

+0

Da ich ein zugrundeliegendes Problem nicht feststellen konnte, ist mein erster Gedanke, dass er den falschen Teil des Textes in der Eingabebox anruft. Seine Frage ist wörtlich: "Wie kann ich den letzten Buchstaben/die letzte Zahl einer Zeichenfolge erhalten?" Das ist, wenn ich mich nicht irre .. –

0

Wenn Sie das letzte Mal getippt char möchte ich vorschlagen:

private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e) 
{ 
      Console.WriteLine(e.Text); 
} 

Wenn Sie letzte Zeichen in Textbox wollen schlage ich Textchanged Ereignis wie bereits von Jeroen van erzählt Langen:

private void inputBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    string inputString = ((TextBox)sender).Text; 
    char lastChar = inputString.Last(); 
    Console.WriteLine(lastChar); 
} 

Hoffnung Codebeispiele helfen Ihnen

Edit: Jetzt ich, dass Sie wahrscheinlich ganze Zahl von Textbox erhalten möchten, wenn das der Sache ist, könnte Get integer from Textbox helfen Ihnen, Code-Beispiel: (? S).

private void inputBox_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     string inputString = ((TextBox)sender).Text; 

     int valueFromTextBox; 
     if (int.TryParse(inputString, out valueFromTextBox)) 
     { 
      //parsing successful 
     } 
     else 
     { 
      //parsing failed. 
     } 
    }