none
RichTextBox改变字体 RRS feed

  • 问题

  •      界面中有一个Combobox和一个RichTextBox,Combobox的内容是所有的文字的字体,当我改变combobox选中项的时候,改变RichTextBox当前输入文字的字体.
    但我输入英文的时候,改变combobox选中项的时候,RichTextBox当前输入的字体会发现改变,但是输入中文却不会发生改变。这是为什么呢?

    2011年4月15日 3:53

答案

全部回复

  • 没有这个问题啊,你的代码是什么样的呢?我这边做了一个简单的Demo,WPF窗体程序版,希望能对你有所帮助。

    首先前台像楼主一样添加ComboBox和RichTextBox

     <ComboBox Name="cbbFont" Margin="12,20,395,265" SelectionChanged="cbbFont_SelectionChanged" />
    
      <RichTextBox Name="rtb" Height="100" HorizontalAlignment="Left" Margin="194,20,0,0" VerticalAlignment="Top" Width="200" />
    
    
    然后在窗体初始化的时候,将字体绑定到ComboBox上
     public MainWindow()
    
      {
    
       InitializeComponent();
    
       List<string> names = new List<string>();
    
       foreach (FontFamily f in Fonts.SystemFontFamilies)
    
       {
    
        names.Add(GetFamilyName(f));
    
       }
    
       names.Sort();
    
       cbbFont.ItemsSource = names;
    
      }
    
     public static string GetFamilyName(FontFamily fontFamily)
        {
          XmlLanguage key = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
          if (fontFamily.FamilyNames.ContainsKey(key)) return fontFamily.FamilyNames[key]; else return fontFamily.Source;
        }
     然后再在ComboBox的选择事件进行如下处理:
     private void cbbFont_SelectionChanged(object sender, SelectionChangedEventArgs e)
    
      {
    
       FontFamily f = new FontFamily(e.AddedItems[0].ToString());
    
       rtb.Document.FontFamily = f;
    
      }
    
    

    • 已建议为答案 About-.NET 2011年4月15日 5:00
    2011年4月15日 4:57
  • 你好,非常感谢你花费时间做了这个Demo,但是这个DEMO的效果是改变了combobox的选中项后,RichTextBox所有的字体都发生了改变,而我的想法是,改变了Combobox的选中项后,RichtextBox以前输入的文字字体不发生改变,改变的是重新输入的文字的字体。

    2011年4月15日 5:07
  • 哦,我主要是针对你上面说的改变字体选项后在RichTextBox中,英文可以改变但是中文不能改变的问题而做的一个小Demo的。下面你说的需求我觉得应该是有办法解决的。
    专注.NET框架技术
    2011年4月15日 5:31
  • 请问该如何解决这个问题了,我在网上找了很久,但是没有什么解决方法可以解决这个问题,网上有几个帖子说这个是Bug。

    2011年4月15日 5:42
  • 参考:

    http://www.codeproject.com/KB/miscctrl/WPFRichTextEditor.aspx?msg=3323368

    你说的没法加粗的原因是你的rtb认为你的中文编辑还没有结束,自己处理一下就好了


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年4月15日 7:49
    版主