一些 Alt 键改变了我的 RichTextBox 字体

Some Alt keys changes my RichTextBox font

我正在 Windows 表单中创建一些印地语输入应用程序。

我用过KrutiDev010字体,有些字符有一些alt键控制码,但如果我输入一些其他alt键控制码,比如Alt+0261Alt+025896然后它分别打印章程 ą 并将我的文本框字体更改为 "Arial"。

如何只阻止那些改变我的 RichTextBox 字体的 alt 键控制代码?

您可以使用 KeyDown 事件来 supress/block Alt 键停止工作...

    private void txt_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Alt)
        {
            e.SuppressKeyPress = true;
        }
    }

这是默认行为。
RichTextBox 自动找到后备字体来表示当前指定的字体无法处理的那些字符。
如果没有另外说明,它将使用后备字体更改 Font 选择。

阅读这篇关于 RichTextBox 祖先(RichEdit 控件,WinForms 控件从中派生)相同默认行为的咆哮:Don't change the font, dammit!

有办法改变这种行为。至少在 RichTextBox 控件报告当前字体和字体选择的方式上。上一篇博文中的C++代码post就是一个

关于以下主题的 Whosebug Question/Answer:
.

但是您不需要为此回退C++
请参阅 RichTextBox.LanguageOption and the RichTextBoxLanguageOptions 标志。

您可以在 Form 构造函数中的 InitializeComponent() proc 之后插入这行代码:

richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont;

richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont | 
                              RichTextBoxLanguageOptions.UIFonts;

略有不同。请参阅参考文档并在您的特定上下文中测试此行为。
如果插入当前字体未处理的 Unicode 符号,则始终可以回退,但 RichTextBox UI 不会更改 Font,甚至 SelectionFont.
Clipboard.SetText(), Clipboard.GetText() 将照常工作。