Ich brauche die letzten drei Zeichen von RichTextBox während der Benutzer einen Text in RichTextbox schreibt.Holen Sie die letzten 3 Zeichen während Benutzer eingeben
Ich binde Eigenschaft auf Text-Eigenschaft von RichTextBox von Extended WPF Toolkit.
public string RtbText
{
get { return _rtbText; }
set
{
_rtbText = value;
NotifyPropertyChanged("RtbText");
}
}
I Reactive Extensions für .NET (Rx) verwenden und Beobachter auf dem Grundstück machen RtbText
Observable.FromEvent<PropertyChangedEventArgs>(this, "PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "RtbText")
.Select(_ => this.RtbText)
.Where(text => text.Length > 1)
.Do(AddSmiles)
.Throttle(TimeSpan.FromSeconds(1))
.Subscribe(GetLastThreeChars);
private void GetLastThreeChars(string text)
{
if (text.Length > 3)
{
string lastThreeChars = text.Substring(text.Length - 2, text.Length);
}
}
Aber wenn ich in RichTextbox Eingabe beginnen Ich erhalte diese Ausnahme:
Index und length muss sich auf eine Position innerhalb der Zeichenfolge beziehen.
Parametername: Längebei System.String.InternalSubStringWithChecks (Int32 start, Länge Int32, Boolean fAlwaysCopy)
bei System.String.Substring (Int32 start, Int32 Länge)
bei WpfApplication1.MainWindow.GetLastThreeChars (String-Text) in C: \ Benutzer \ Jan \ Dokumente \ Visual Studio 2010 \ Projekte \ C# \ Pokec_Messenger \ ver.beta \ IoC.Get \ Pokec_Messenger \ ver.beta \ Pokec_ Messenger \ WpfApplication1 \ MainWindow.xaml.cs: Zeile 97
bei System.Linq.Observable. <> c _DisplayClass389`1. <> c_ DisplayClass38b.b _388 (TSource x)