代码之家  ›  专栏  ›  技术社区  ›  Vikas Sharma

某些alt键更改我的richtextbox字体

  •  1
  • Vikas Sharma  · 技术社区  · 7 年前

    我正在用Windows窗体创建一些印地语输入应用程序。

    我用过 KrutiDev010 字体,有些字符有一些alt键控制代码,但是如果我输入其他alt键控制代码,例如 Alt+0261 , Alt+025896 然后它打印出一份宪章 Ä , 攨 分别将文本框字体更改为“Arial”。

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jimi    7 年前

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

    阅读这篇关于 多格式文本框 祖先 RichEdit 控件,从中 WinForms 控件派生): Don't change the font, dammit!

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

    关于主题的StackOverflow问题/答案:
    How to force a Win32 RichEdit fallback to SimSun with East Asian text .

    但你不需要 退路 C++ 为了这个。
    查看 RichTextBox.LanguageOption 以及 RichTextBoxLanguageOptions 旗帜。

    您可以在 InitializeComponent() 在您的 Form 施工单位:

    richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont;
    


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

    有点不同。请参阅参考文档,并在特定的上下文中测试这种行为。
    如果插入当前字体无法处理的Unicode符号,则始终可以进行回退,但 多格式文本框 用户界面不会更改 字体 ,甚至不是 SelectionFont .
    Clipboard.SetText() , Clipboard.GetText() 照常工作。

        2
  •  0
  •   3-14159265358979323846264    7 年前

    您可以使用 KeyDown 事件来抑制/阻止alt键工作…

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