一些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; } }