为什么richtextbox中全角半角同时被选择会造成selectionfont为Nothing,如何解决?

ytyszxf 2010-05-04 10:40:03
如题
...全文
192 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forrest23 2010-05-04
  • 打赏
  • 举报
回复
确实会有这样的问题 好像中英文同时选中 和 英文和半角同时选中就会有这样的问题
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
我用的vs2008,昨天晚上一个人跟我说vs2010不报错
Forrest23 2010-05-04
  • 打赏
  • 举报
回复
等会换2005测试下,你用的vs2005?
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
UP!!!!!!!!
jbo126 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ytyszxf 的回复:]
。。。。那人家word是怎么做的?。。那我想要的功能不是不能实现了?
[/Quote]
人家word还不是单独控制?当你选中的内容字体不一时你可以发现工具栏上有关字体名称,字体大小等内容全为空,你也可以在选中的不同字体的内容时(即selectionfont为空时)采取一种单独的Image给button呀?
xingyuebuyu 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ytyszxf 的回复:]
to xingyuebuyu
不是的,如果selection中包含bord和regular返回时regular,只是全角半角会出现nothing的情况,和字体无关,全角半角才是症结所在
[/Quote]

都一样的的道理.这个只是系统内部处理时应该这种情况采取的反应不同而已.
bord和regular都是字体这个类中的属性,一个实例中的属性不一样,即使FONTNAME是一样的都是"宋体",那还是两个不同的实例,关键是SelectionFont只是一个实例的值,不可能包含两个不同实例.它在selection中包含bord和regular返回时regular,和返回NOTHING对你来说区别大吗?都是不能完全反映你当前选中的文本的所有信息.
那你在确定SelectionFont是NOTHING时,要么统一的全部都设成一样的字体属性,要么就逐字判断分别设置.
这个只要你在使用SelectionFont之前先进行判断然后再处理就可以了.你要想从根源上解决不返回NOTHING估计要写个自定义控件.
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
to xingyuebuyu
不是的,如果selection中包含bord和regular返回时regular,只是全角半角会出现nothing的情况,和字体无关,全角半角才是症结所在
xingyuebuyu 2010-05-04
  • 打赏
  • 举报
回复
你选中的文本里面含有多种字体,但是RichTextBox1.SelectionFont 也只能包含一种字体的结果,它无法确定究竟要返回哪种字体结果,即使返回其中的一种字体代表为结果,也不能反映你选中所有文本的结果,所以直接就返回NOTHING.
你只有逐字判断才能得到所有的文本的字体信息。
你最后只要解决问题就好了,RichTextBox1.SelectionFont在这种情况下是否返回NOTHING并不重要。
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
话是那么说。。但是有问题总有办法解决吧。。
Forrest23 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ytyszxf 的回复:]
。。。。那人家word是怎么做的?。。那我想要的功能不是不能实现了?
[/Quote]

word又不是用的 RichTextBox控件 。。。。
xingyuebuyu 2010-05-04
  • 打赏
  • 举报
回复
WORD中选中中英文文本时,设置字体时它会分别显示当前中,英文的字体,你可以分别进行设置。
只是RichTextBox1中遇到这种情况直接返回NOTHING,所以你可以用6L的代码逐字判断字体完成你的需求。
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
。。。。那人家word是怎么做的?。。那我想要的功能不是不能实现了?
Forrest23 2010-05-04
  • 打赏
  • 举报
回复
好像是不能避免,如果选择的内容都是中文或都是英文是不会出错的,如果选的中英文都有 那就不能判断了
我觉得这种情况的话你就不用判断了,直接
if Me.RichTextBox1.SelectionFont is nothing then exit sub 好了 没必要老是吊在这个上面
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
不行,我想完成选中一段文字以后判断它的字体,然后判断字体来改变botton控件的image属性,不改变这段文字本身的FONT,如果注意判断将非常麻烦,因为其中可能存在4种不同字体,regular..bold等等,有没有什么方法能避免font is nothing这种情况的发生?
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
不行,我想完成选中一段文字以后判断它的字体,然后判断字体来改变botton控件的image属性,不改变这段文字本身的FONT,如果注意判断将非常麻烦,因为其中可能存在4种不同字体,regular..bold等等,有没有什么方法能避免font is nothing这种情况的发生?
xingyuebuyu 2010-05-04
  • 打赏
  • 举报
回复
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As Font = Me.RichTextBox1.SelectionFont
Dim start As Integer = Me.RichTextBox1.SelectionStart
Dim len As Integer = Me.RichTextBox1.SelectionLength
For i As Integer = 0 To Me.RichTextBox1.SelectionLength
Me.RichTextBox1.Select(start + i, 1)
f = Me.RichTextBox1.SelectionFont
If f IsNot Nothing Then
Console.WriteLine(f.Name)
''将选取的文本逐字判断,只要发现有未加粗的,就将之前选择的全部加粗
If f.Bold = False Then
Me.RichTextBox1.Select(start, len)
Me.RichTextBox1.SelectionFont = New Font(f, FontStyle.Bold)
Exit For
End If
End If
Next
End Sub
End Class


这样麻烦些,应该可以解决你的问题。
ytyszxf 2010-05-04
  • 打赏
  • 举报
回复
那怎么解决呢?谁知道解决方法?

16,557

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧