这是默认行为。
The RichTextBox
控件会自动查找后备字体来表示当前字体无法处理的字符。
如果没有其他指示,它将使用后备字体更改字体选择。
阅读这篇关于相同默认行为的咆哮RichTextBox
祖先(RichEdit
/ MsftEdit
控制,从中WinForms
控制推导):别改字体啊,妈的! http://archives.miloush.net/michkap/archive/2006/02/13/531110.html
有一些方法可以改变这种行为。至少在方式上RichTextBox
控件报告当前的字体和字体选择。这C++
上一篇博文中的代码就是其中之一。
关于该主题的 StackOverflow 问题/答案:
如何使用东亚文本强制 Win32 RichEdit 回退到 SimSun https://stackoverflow.com/questions/34784110/how-to-force-a-win32-richedit-fallback-to-simsun-with-east-asian-text.
但你不需要fallback to C++
为了这。
请参阅RichTextBox.LanguageOption https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.richtextbox.languageoption和RichTextBox 语言选项 https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.richtextboxlanguageoptions flags.
您可以在后面插入这行代码InitializeComponent()
表单构造函数中的 proc:
richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont;
or
richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont |
RichTextBoxLanguageOptions.UIFonts;
有一点点不同。请参阅参考文档并在您的特定上下文中测试此行为。
如果插入当前字体无法处理的 Unicode 符号,则始终可以使用回退方法,但RichTextBox
UI 不会改变字体,甚至不会改变SelectionFont
.
And 剪贴板.SetText() https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.settext, 剪贴板.GetText() https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.gettext将照常工作。