关于WPF的RichTextBox控件,Winform里面的方法WPF里面没有了呢?

时间:2022-09-03 18:57:42
在C#的winform程序中,RichTextBox控件带有一个GetCharIndexFromPosition()方法,这个方法可以根据坐标获取字符。



为什么在WPF的程序中,RichTextBox控件没有这个方法了...WPF不是应该比winform功能更强的吗?

还是说改名字了?或者说需要RichTextBox.什么.这个方法?

11 个解决方案

#1


你听谁说WPF比WINFORM强?

#2


WPF里也有这种方法的,我以前用过,好久没写了,具体的忘记了,你好好找找,我记得好像没有winform中这么简单,我貌似记得,它要先获取内容再获取位置的

#3


Winform 控件库和WPF控件库是两个类库。相似但不相同

#4


引用 1 楼 DENQH 的回复:
你听谁说WPF比WINFORM强?


单纯的感觉啊,WPF是.net3.5之后才有的...感觉比较高端

#5


WPF RichTextBox中文档是基于FlowDocument,要操作其中的文本东西主要关注TextPointer和TextRange

#6


引用 2 楼 wuzhengqing1 的回复:
WPF里也有这种方法的,我以前用过,好久没写了,具体的忘记了,你好好找找,我记得好像没有winform中这么简单,我貌似记得,它要先获取内容再获取位置的

方法属性太多啊 不好找啊 给点思路啊

#7


引用 5 楼 DENQH 的回复:
WPF RichTextBox中文档是基于FlowDocument,要操作其中的文本东西主要关注TextPointer和TextRange


谢谢,不过看着好混乱 TAT
貌似是在TextPointer里

#8


你要解决的还是你前面那个问题吧?在FlowDocument中,Run是文字所在UI的最小单位,在RichTextBox的资源中为Run定义样式,添加鼠标进入的事件处理,就可以对触发时间的相应的Run进行处理,比如获得该Run的字符串内容,字符大小,颜色等。
一个字符串颜色不同于相邻字符,该字符串必然在一个独立的Run中,所以对触发鼠标进入事件的Run进行处理即可。
WPF的RichTextBox比WinForm可包含的内容要丰富得多,保存的格式也丰富得多,你可以在msdn中查找一下相关资料,详细了解FlowDocument和FixedDocument。

#9


引用 8 楼 lizhibin11 的回复:
你要解决的还是你前面那个问题吧?在FlowDocument中,Run是文字所在UI的最小单位,在RichTextBox的资源中为Run定义样式,添加鼠标进入的事件处理,就可以对触发时间的相应的Run进行处理,比如获得该Run的字符串内容,字符大小,颜色等。
一个字符串颜色不同于相邻字符,该字符串必然在一个独立的Run中,所以对触发鼠标进入事件的Run进行处理即可。
WPF的RichTextBo……


嗯,我在winform里面用RichTextBox.GetCharIndexFromPosition()实现鼠标落在不同颜色的文字上给出不同提示的功能,但是在WPF里找不到类似的功能。
Run是最小单位,但是怎么才能找出来鼠标悬停在哪个run上面呢..?

#10


你的上一个帖子中有我贴的代码。在被回调的mouseenter方法中,第一个参数sender就是触发鼠标进入事件的Run,强制转换后处理即可。

#11


引用 10 楼 lizhibin11 的回复:
你的上一个帖子中有我贴的代码。在被回调的mouseenter方法中,第一个参数sender就是触发鼠标进入事件的Run,强制转换后处理即可。

哦 原来如此 成功了 !!

#1


你听谁说WPF比WINFORM强?

#2


WPF里也有这种方法的,我以前用过,好久没写了,具体的忘记了,你好好找找,我记得好像没有winform中这么简单,我貌似记得,它要先获取内容再获取位置的

#3


Winform 控件库和WPF控件库是两个类库。相似但不相同

#4


引用 1 楼 DENQH 的回复:
你听谁说WPF比WINFORM强?


单纯的感觉啊,WPF是.net3.5之后才有的...感觉比较高端

#5


WPF RichTextBox中文档是基于FlowDocument,要操作其中的文本东西主要关注TextPointer和TextRange

#6


引用 2 楼 wuzhengqing1 的回复:
WPF里也有这种方法的,我以前用过,好久没写了,具体的忘记了,你好好找找,我记得好像没有winform中这么简单,我貌似记得,它要先获取内容再获取位置的

方法属性太多啊 不好找啊 给点思路啊

#7


引用 5 楼 DENQH 的回复:
WPF RichTextBox中文档是基于FlowDocument,要操作其中的文本东西主要关注TextPointer和TextRange


谢谢,不过看着好混乱 TAT
貌似是在TextPointer里

#8


你要解决的还是你前面那个问题吧?在FlowDocument中,Run是文字所在UI的最小单位,在RichTextBox的资源中为Run定义样式,添加鼠标进入的事件处理,就可以对触发时间的相应的Run进行处理,比如获得该Run的字符串内容,字符大小,颜色等。
一个字符串颜色不同于相邻字符,该字符串必然在一个独立的Run中,所以对触发鼠标进入事件的Run进行处理即可。
WPF的RichTextBox比WinForm可包含的内容要丰富得多,保存的格式也丰富得多,你可以在msdn中查找一下相关资料,详细了解FlowDocument和FixedDocument。

#9


引用 8 楼 lizhibin11 的回复:
你要解决的还是你前面那个问题吧?在FlowDocument中,Run是文字所在UI的最小单位,在RichTextBox的资源中为Run定义样式,添加鼠标进入的事件处理,就可以对触发时间的相应的Run进行处理,比如获得该Run的字符串内容,字符大小,颜色等。
一个字符串颜色不同于相邻字符,该字符串必然在一个独立的Run中,所以对触发鼠标进入事件的Run进行处理即可。
WPF的RichTextBo……


嗯,我在winform里面用RichTextBox.GetCharIndexFromPosition()实现鼠标落在不同颜色的文字上给出不同提示的功能,但是在WPF里找不到类似的功能。
Run是最小单位,但是怎么才能找出来鼠标悬停在哪个run上面呢..?

#10


你的上一个帖子中有我贴的代码。在被回调的mouseenter方法中,第一个参数sender就是触发鼠标进入事件的Run,强制转换后处理即可。

#11


引用 10 楼 lizhibin11 的回复:
你的上一个帖子中有我贴的代码。在被回调的mouseenter方法中,第一个参数sender就是触发鼠标进入事件的Run,强制转换后处理即可。

哦 原来如此 成功了 !!