首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ICSharpCode.TextEditor - KeyDown问题

ICSharpCode.TextEditor - KeyDown问题
EN

Stack Overflow用户
提问于 2009-09-06 19:37:12
回答 3查看 2.8K关注 0票数 5

我正在尝试为ICSharpCode.TextEditor创建一个自动补全函数。但是fileTabs_KeyDown不能识别Enter/Backspace/Tab/...

我试图在活动编辑器中添加一个新的KeyEventHandler,但是这并没有调用我的KeyDown函数。

也许我可以直接请求windows消息,但我不知道怎么做,因为每个人都只使用e.KeyDown或e.KeyPress事件。

请帮帮我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-09 13:45:13

ICSharpCode.TextEditor是一个复合控件。如果将事件处理程序附加到主文本编辑器,则不会收到任何事件。相反,您必须附加到textEditor.ActiveTextAreaControl.TextArea上的事件。

此外,文本编辑器本身已经在处理事件。要截取按键,请使用特殊事件textEditor.ActiveTextAreaControl.TextArea.KeyEventHandler.

票数 8
EN

Stack Overflow用户

发布于 2010-07-28 15:16:39

按Enter / Backspace /Tab键时不触发的KeyPress、KeyDown和KeyEventHandler。

要捕获这些按键操作,必须处理KeyUp事件。

然后,您可以检查KeyEventArgs.KeyCode的值

票数 0
EN

Stack Overflow用户

发布于 2013-05-22 04:01:39

正如丹尼尔所说的,你使用'ActiveTextAreaControl.TextArea‘事件来捕获,像Enter、空格和组合这样的键,你可以使用如下代码来捕获CTRL +空格组合:

代码语言:javascript
复制
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的屏幕坐标,因为我想在那里显示一个弹出窗口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1386506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档