C# 某些Alt键会更改我的RichTextBox字体

C# 某些Alt键会更改我的RichTextBox字体,c#,.net,winforms,C#,.net,Winforms,我正在Windows窗体中创建一些印地语打字应用程序 我使用了KrutiDev010Font,有些字符有一些alt键控制代码,但是如果我输入一些其他alt键控制代码,比如alt+0261,alt+025896,那么它会打印一个章程ą,攨并将我的文本框字体更改为“Arial” 如何仅阻止更改我的RichTextBox字体的alt键控制代码 您可以使用KeyDown事件来抑制/阻止Alt键的功能 private void txt_KeyDown(object sender, KeyEvent

我正在Windows窗体中创建一些印地语打字应用程序

我使用了
KrutiDev010
Font,有些字符有一些alt键控制代码,但是如果我输入一些其他alt键控制代码,比如
alt+0261
alt+025896
,那么它会打印一个章程
ą
并将我的文本框字体更改为“Arial”


如何仅阻止更改我的RichTextBox字体的alt键控制代码

您可以使用
KeyDown
事件来抑制/阻止Alt键的功能

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

这是默认行为。
RichTextBox
会自动查找一种回退字体,以表示当前指定字体无法处理的字符。
如果没有其他指示,它将使用回退字体更改
字体
选择。

阅读这篇关于
RichTextBox
祖先(
RichEdit
控件,从中派生
WinForms
控件)相同默认行为的文章:

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

关于以下主题的问题/答案:
.

但是您不需要回退到
C++
来实现这一点。
请参阅和标志。

您可以在
表单中的
InitializeComponent()
过程之后插入这行代码
构造函数:

richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont;

richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont | RichTextBoxLanguageOptions.UIFonts;
有一点不同。请参阅参考文档,并在您的特定上下文中测试此行为。
如果插入当前字体未处理的Unicode符号,则始终可以进行回退,但
RichTextBox
UI不会更改
字体,甚至不会更改
SelectionFont


并且,将正常工作。

仅阻止更改我的文本框字体的alt键。您是否有更改字体的alt控制代码的完整列表?如果没有,那么您唯一的选择就是在每次按键后重置字体,这可能是一场性能噩梦!我已经更新了您的问题,因为您似乎在询问如何阻止Alt键,而不是特定的控制代码:0)