我正在尝试为ICSharpCode.TextEditor创建一个自动补全函数。但是fileTabs_KeyDown不能识别Enter/Backspace/Tab/...
我试图在活动编辑器中添加一个新的KeyEventHandler,但是这并没有调用我的KeyDown函数。
也许我可以直接请求windows消息,但我不知道怎么做,因为每个人都只使用e.KeyDown或e.KeyPress事件。
请帮帮我。
发布于 2009-09-09 13:45:13
ICSharpCode.TextEditor是一个复合控件。如果将事件处理程序附加到主文本编辑器,则不会收到任何事件。相反,您必须附加到textEditor.ActiveTextAreaControl.TextArea上的事件。
此外,文本编辑器本身已经在处理事件。要截取按键,请使用特殊事件textEditor.ActiveTextAreaControl.TextArea.KeyEventHandler.
发布于 2010-07-28 15:16:39
按Enter / Backspace /Tab键时不触发的KeyPress、KeyDown和KeyEventHandler。
要捕获这些按键操作,必须处理KeyUp事件。
然后,您可以检查KeyEventArgs.KeyCode的值
发布于 2013-05-22 04:01:39
正如丹尼尔所说的,你使用'ActiveTextAreaControl.TextArea‘事件来捕获,像Enter、空格和组合这样的键,你可以使用如下代码来捕获CTRL +空格组合:
public frmConexon()
{
InitializeComponent();
this.txtEditor.ActiveTextAreaControl.TextArea.KeyUp += new System.Windows.Forms.KeyEventHandler(TextArea_KeyUp);
}
void TextArea_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space && e.Control)
{
TextArea S = (TextArea)sender;
MessageBox.Show(string.Format("CTRL + Spacio ({0})", S.Caret.ScreenPosition.ToString()));
}
}在这个例子中,我甚至检索到了Caret的屏幕坐标,因为我想在那里显示一个弹出窗口。
https://stackoverflow.com/questions/1386506
复制相似问题