我怎样才能更换' '使用"་"ཚེག用于WPF Richtextbox?

时间:2014-06-10 05:44:45

标签: c# wpf richtextbox

我想在VS 2010的WPF Rich Text框中替换''与Tibetian字符“་”。。

假设我有一个带有文本的富文本框,如下所示:

སྐད བརྡའི སྒྲིག རིམ སྐྲུན པའི་

以下是我期望通过使用WPF richTextBox获得的输出。

སྐད་བརྡའི་སྒྲིག་རིམ་སྐྲུན་པའི་

我有一个语言键盘:

Monlam Bod-yig3.01 Unicode TCRCKB -

1 个答案:

答案 0 :(得分:0)

请参阅此链接以供参考:automatic replacement of text in wpf richtextbox


Picrofo Software

由于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;ཚེག。

如果这不能满足您的需求,您可以尝试以下步骤:

  1. 为RichTextBox提升TextChangedEvent

  2. 检查文字是否为&#39; &#39;,来自eventargs

  3. 如果为true,请从RichTextBox.Text中删除一个字符并添加&#34;་&#34;ཚེག

  4. 编辑:请参阅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);