一些alt键更改了我的richtextbox字体

我正在用c#windowsforms创建一些印地语打字应用程序。

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

如何只阻止那些改变我的文本框字体的alt键控制代码? 请帮忙。

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

阅读此rant有关RichTextBox祖先( RichEdit控件, WinForms控件从中派生)的相同默认行为: 不要更改字体,该死!

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

关于主题的StackOverflow问题/答案:
如何使用东亚文本强制Win32 RichEdit回退到SimSun 。

但是你不需要为此回退到 C++
请参阅RichTextBox.LanguageOption和RichTextBoxLanguageOptions标志。

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

 richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont; 

要么

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

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

您可以使用KeyDown事件来阻止/阻止Alt键运行…

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