我已经设法改变了富文本文档的字体(名称和大小),同时保留了样式(即:粗体,斜体,下划线)。但是,我的解决方案需要两个额外的RTB(两者都不可见)。相关代码(如下)通过字体名称/大小下拉列表处理:
rtb.Font.Dispose();
//store style info in Temp1
_temp1.Rtf = rtb.Rtf;
//store new font in Temp2
_temp2.Text = rtb.Text;
_temp2.Font = new Font(fontDropDown.Text, int.Parse(fontSizeDropDown.SelectedItem.ToString()));//replaces FONT and STYLE
//
_temp1.Focus();
for (int i = 0; i < _temp1.TextLength; i++)
{
_temp1.Select(i, 1);
if (_temp1.SelectionFont != null)
{
_temp2.Select(i, 1);//set font to Font of temp2, style from temp1
_temp2.SelectionFont = new Font(_temp2.SelectionFont, _temp1.SelectionFont.Style);
}
}
rtb.Rtf = _temp2.Rtf;
//
markAsModified();
我正在使用两个不可见的临时RTB,因为我担心“闪烁”的可能性。 我只是想知道是否有更好的方法来做到这一点,没有pInvoking或InterOp。 *同样:由于此解决方案让我担心内存/性能问题,我想知道此代码导致此类问题的可能性。