我正在尝试使某种智能感知看起来像我正在处理的编辑器。当用户在 Richtextbox 中键入并且字母匹配一个单词时,将弹出一个列表视图并选择匹配的单词。
问题是焦点仍然在richtextbox上,所以所有的按键都将转到那个控件,这很好,除了如果有匹配我需要在列表视图中而不是在richtextbox中触发Return和箭头键。
有什么方法可以使用richtextbox 的keypress 事件将这些键发送到列表视图?
谢谢
我正在尝试使某种智能感知看起来像我正在处理的编辑器。当用户在 Richtextbox 中键入并且字母匹配一个单词时,将弹出一个列表视图并选择匹配的单词。
问题是焦点仍然在richtextbox上,所以所有的按键都将转到那个控件,这很好,除了如果有匹配我需要在列表视图中而不是在richtextbox中触发Return和箭头键。
有什么方法可以使用richtextbox 的keypress 事件将这些键发送到列表视图?
谢谢
使用scintilla会不会更容易,可以在此处找到 .NET 包装器,它可以满足您的所有需求?
编辑:看起来有人已经这样做了,在你想要实现的目标中,一篇关于它的文章在CodeProject上。
我认为重点仍然放在richtextbox上是件好事。
如何子类化该列表视图以添加诸如void SelectNext()
、void SelectPrevious()
和string PerformCompletion()
. 您仅为富文本框处理鼠标事件。如果文本框可见,并且用户按下向下箭头,SelectNext()
则调用并吞下按键,但如果不可见,只需向下导航到下一行(让按键通过)。
如果列表视图可见并且用户按 Enter 或 Tab 或 . 或其他,调用PerformCompletion()
以获取所选字符串,然后添加尚未输入的任何字符。