我想在VS 2010的WPF Rich Text框中替换''与Tibetian字符“་”。。
假设我有一个带有文本的富文本框,如下所示:
སྐད བརྡའི སྒྲིག རིམ སྐྲུན པའི་
以下是我期望通过使用WPF richTextBox获得的输出。
སྐད་བརྡའི་སྒྲིག་རིམ་སྐྲུན་པའི་
我有一个语言键盘:
Monlam Bod-yig3.01 Unicode TCRCKB -
答案 0 :(得分:0)
请参阅此链接以供参考:automatic replacement of text in wpf richtextbox
由于System.Windows.Controls.RichTextBox
没有Text
的属性来检测其值,您可以使用以下内容检测其值
string _Text = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
然后,您可以更改_Text
并使用以下
_Text = _Text.Replace("pc", "Personal Computer");
if (_Text != new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text)
{
new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text = _Text;
}
所以,它看起来像这样
string _Text = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
_Text = _Text.Replace("pc", "Personal Computer"); // Replace pc with Personal Computer
if (_Text != new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text)
{
new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text = _Text; // Change the current text to _Text
}
备注:您可以声明Text.Replace("pc", "Personal Computer");
,而不是使用List<String>
来保存字符及其替换
示例:强>
List<string> _List = new List<string>();
private void richTextBox1_TextChanged(object sender, TextChangedEventArgs e)
{
string _Text = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
for (int count = 0; count < _List.Count; count++)
{
string[] _Split = _List[count].Split(','); //Separate each string in _List[count] based on its index
_Text = _Text.Replace(_Split[0], _Split[1]); //Replace the first index with the second index
}
if (_Text != new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text)
{
new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text = _Text;
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// The comma will be used to separate multiple items
_List.Add("pc,Personal Computer");
_List.Add("sc,Star Craft");
}
这里的用户正试图用个人电脑取代电脑, 您可以通过替换&#39;来模拟相同的行为。 &#39;用&#34;་&#34;ཚེག。
如果这不能满足您的需求,您可以尝试以下步骤:
为RichTextBox提升TextChangedEvent
检查文字是否为&#39; &#39;,来自eventargs
如果为true,请从RichTextBox.Text中删除一个字符并添加&#34;་&#34;ཚེག
编辑:请参阅select语句(虽然这是一种粗略的方法,只有在您选择后键入时才有用)
string _Text = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
_Text = _Text.Replace(" ", "“་”ཚེག"); // Replace pc with Personal Computer
if (_Text != new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text)
{
new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text = _Text+" "; // Change the current text to _Text
}
richTextBox1.Selection.Select(_Text.Length-1, _Text.Length);