RichtextBox自动将文本方向更改为RightToLeft

问题描述 投票:0回答:2

我有一个LeftToRight RichTextBox。

我正在捕捉KeyUp事件并使用RichTextBox中的SelectedText进行一些修改。

但是我遇到了一个奇怪的问题。替换Selected Text后,RichTextBox的方向变为RightToLeft。

在CTRL + R之前

enter image description here

enter image description here

这是我的代码(只有CTRL + R导致问题):

    private void tbSource_KeyUp(object sender, KeyEventArgs e)
    {

        string appendTag, selectedText;
        appendTag = string.Empty;
        if (e.Control)
        {
            selectedText = tbSource.SelectedText;
            switch (e.KeyCode)
            {
                case Keys.U:
                    appendTag = @"<U>{0}</U>";
                    break;
                case Keys.B:
                    appendTag = @"<B>{0}</B>";
                    break;
                case Keys.R:
                    appendTag = @"<ruby>{0}<rt></rt></ruby>";
                    break;
                case Keys.T:
                    appendTag = @"(  )";
                    break;
                default:
                    appendTag = @"";
                    break;
            }

            if (e.KeyCode == Keys.U || e.KeyCode == Keys.B || e.KeyCode == Keys.R)
            {
                selectedText = string.Format(appendTag, selectedText);
                tbSource.SelectedText = selectedText;
            }
            else {
                tbSource.AppendText(appendTag);
            }    
        }           
    }
c# winforms richtextbox
2个回答
3
投票

WinForms RichTextBox有一些预定义的键盘快捷键,CTRL + R是将文本方向改为RightToLeft的键盘快捷键。

您可以将属性ShortcutsEnabled设置为false并删除所有键盘快捷键(这包括CTRL + C和CTRL + V等有用的快捷键),或者您可以将KeyEventArgs属性SuppressKeyPress的代码设置更改为true。

但是你需要使用KeyDown事件处理程序而不是KeyUp(我认为KeyUp太晚无法抑制任何事情)

    private void tbSource_KeyDown(object sender, KeyEventArgs e)
    {
        .......
            case Keys.R:
                appendTag = @"<ruby>{0}<rt></rt></ruby>";
                e.SuppressKeyPress = true;
                break;
    }

键盘快捷键列表在ShortcutsEnabled属性的文档中定义


2
投票

CTRL + R是默认快捷方式,可将方向更改为RightToLeft。将RichtTextBox的ShortcutsEnabled属性设置为false。有关这家酒店的更多信息,请访问here

© www.soinside.com 2019 - 2024. All rights reserved.