ユーザーがrichTextboxにテキストを書き込むときに、richTextBoxから最後の3文字を取得する必要があります。ユーザー入力時に最後の3文字を取得する
拡張WPFツールキットのrichTextBoxのTextプロパティにプロパティをバインドします。
私は.NETの反応拡張受信(Rx)を使用してプロパティにオブザーバーを作るpublic string RtbText
{
get { return _rtbText; }
set
{
_rtbText = value;
NotifyPropertyChanged("RtbText");
}
}
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);
}
}
しかし、私は、リッチテキストボックスに入力して開始した場合、私はこの例外を取得:
インデックスと長さは文字列内の場所を参照する必要があります。
パラメータ名:長さSystem.String.Substring(のInt32のstartIndex、のInt32長)WpfApplication1.MainWindow.GetLastThreeCharsで
(AT System.String.InternalSubStringWithChecks(のInt32のstartIndex、のInt32長、ブールfAlwaysCopy)
でPokec_Messenger \ ver.beta \ IoC.Get \ Pokec_Messenger \ ver.beta \ Pokec_ Messenger \ WpfApplication1 \ MainWindow.xaml.cs:行97
at System.Linq.Observable。 <> c _DisplayClass389`1。 <> C_ DisplayClass38b.bその後、 _388(TSOURCE x)から