关于用fontdialog来给不同大小的一段文字加粗,但不修改字体大小 在richtextbox 中, 当前选中的text中混合着不同的字体大小,我想把这一段选中的字体加粗,但不改变各字体大小, 可是打开fontdialog之后,就会选中一个默认的字体大小,加粗的同时把我的字体大小也给修改了,如何是好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以参考一下这个做法:int start = this.richTextBox1.SelectionStart;int count = this.richTextBox1.SelectionStart + this.richTextBox1.SelectionLength;for (int i = start; i < count; i++){ this.richTextBox1.SelectionStart = i; this.richTextBox1.SelectionLength = 1; this.richTextBox1.SelectionFont = new Font(this.richTextBox1.SelectionFont, this.richTextBox1.SelectionFont.Style | FontStyle.Bold);}this.richTextBox1.SelectionStart = start;this.richTextBox1.SelectionLength = count; 谢谢,这也是个办法, 可是如果一定要通过fontdialog来呢? 因为除了加粗也有可能要加下划线什么的 你可以试着按如下来做:FontDialog fd = new FontDialog();bool mult = this.richTextBox1.SelectionFont==null;fd.Font = this.richTextBox1.SelectionFont;if (fd.ShowDialog(this) == DialogResult.OK){ if (!mult) { this.richTextBox1.SelectionFont = fd.Font; return; } int start = this.richTextBox1.SelectionStart; int count = this.richTextBox1.SelectionStart + this.richTextBox1.SelectionLength; for (int i = start; i < count; i++) { this.richTextBox1.SelectionStart = i; this.richTextBox1.SelectionLength = 1; if (fd.Font != null) { this.richTextBox1.SelectionFont = new Font(this.richTextBox1.SelectionFont, fd.Font.Style); } } this.richTextBox1.SelectionStart = start; this.richTextBox1.SelectionLength = count;} 两问题:1. 按msdn所說,如果选择的text里包括有混合的字体,那richTextBox1.SelectionFont应该返回null, 可事实是总是返回 {Name = "SimSun" Size=13.0} 不知道是不是rechtextbox的一个bug?2. 不知道应该给richTextBox1.SelectionFont给一个什么样的font 再ShowDialog时,在字体大小textbox中不默认选择任何字体,就像在wwordpad中一样. 我是试过了N多种方法都不成功.快晕掉了我靠. 用户在这地方还非要做得象wordpad一樣的处理方式 richTextBox1.SelectionFont属性在有多个字体的时候确实是null值,没有问题。不过,好像当richTextBox1.SelectionFont为null的时候FontDialog并不会显示“空字体”,我觉得可以忽略这一点,因为这个时候字体名称已不重要了,重要的是是否粗体,是否有删除线等其它的属性。如果要细究这个问题就没有什么意义了,必竟RichTextBox控件的功能有限。 richTextBox1.SelectionFont属性在有多个字体的时候确实是null值,没有问题这个我还是没试出来,每一次都是返回的都是{Name = "SimSun" Size=13.0}字体, 不知是否有什么属性要配置? 明白, 只有是不同的字体,而不是不同的字大小才会返回null asp.net网站客户端图片不显示问题 C#操作注册表 C#线程的一个问题 如何自定义 C# messagebox 的图标(使用自己的导入icon),求详细过程。新手。 在winform中的dataGrid问题 sql中的select语句问题 C#可不可以创建可更新记录集 谁懂arcengine基于C#的开发? 如何在程序里动态生成数据库? C#简单问题? c#程序如何能在运行时无显示只在任务管理器中有个进程? c# 打开excel 的问题!顶也给分!!!
int start = this.richTextBox1.SelectionStart;
int count = this.richTextBox1.SelectionStart + this.richTextBox1.SelectionLength;
for (int i = start; i < count; i++)
{
this.richTextBox1.SelectionStart = i;
this.richTextBox1.SelectionLength = 1;
this.richTextBox1.SelectionFont = new Font(this.richTextBox1.SelectionFont, this.richTextBox1.SelectionFont.Style | FontStyle.Bold);
}
this.richTextBox1.SelectionStart = start;
this.richTextBox1.SelectionLength = count;
FontDialog fd = new FontDialog();
bool mult = this.richTextBox1.SelectionFont==null;
fd.Font = this.richTextBox1.SelectionFont;
if (fd.ShowDialog(this) == DialogResult.OK)
{
if (!mult)
{
this.richTextBox1.SelectionFont = fd.Font;
return;
}
int start = this.richTextBox1.SelectionStart;
int count = this.richTextBox1.SelectionStart + this.richTextBox1.SelectionLength;
for (int i = start; i < count; i++)
{
this.richTextBox1.SelectionStart = i;
this.richTextBox1.SelectionLength = 1;
if (fd.Font != null)
{
this.richTextBox1.SelectionFont = new Font(this.richTextBox1.SelectionFont, fd.Font.Style);
}
}
this.richTextBox1.SelectionStart = start;
this.richTextBox1.SelectionLength = count;
}
1. 按msdn所說,如果选择的text里包括有混合的字体,那richTextBox1.SelectionFont应该返回null, 可事实是总是返回 {Name = "SimSun" Size=13.0} 不知道是不是rechtextbox的一个bug?2. 不知道应该给richTextBox1.SelectionFont给一个什么样的font 再ShowDialog时,在字体大小textbox中不默认选择任何字体,就像在wwordpad中一样.