我有一个项目(Void)使用.NET和Mono的Eto GUI框架。我正在构建一个类似Vim的文本编辑器,它至少具有Vim所具有的一些模式(是的,我知道,one does not simply...)。
我的GUI的基本结构只是Form
Content
是Drawable
,因此我对不符合常规GUI应用程序风格的内容具有最大的灵活性。当我删除普通模式并且KeyUp
命令关闭窗口时,我已成功将ZQ
处理程序附加到表单。
KeyUp += (sender, eventArgs) =>
{
var keyPress = eventArgs.AsVoidKeyPress();
if (keyPress != null)
{
handler(keyPress);
}
};
对于普通模式来说这很好,但是对于其他模式,例如命令模式和插入模式,我希望能够捕获特殊的键组合(即使用 CTRL 的键组合)但不是我只是想把东西当成文字。这将允许我处理Unicode等。换句话说,我不想简单地将键击转换回文本本身。
我尝试附加TextInput
事件。
Console.WriteLine("I see this, but...");
TextInput += (sender, eventArgs) =>
{
Console.WriteLine("...I don't see this, no matter what I type.");
};
我甚至评论了我对KeyUp
事件的订阅,看看是否存在冲突,但我只是没有得到任何回复。这是因为我将它直接附加到表单上吗?有没有办法在不实际使用文本框的情况下捕获文本输入?
答案 0 :(得分:1)
TextInput
事件已在开发分支(即将发布的2.1版本)中完全实现,您可以通过myget Feed使用该事件。这应该捕获来自Drawable
和其他控件(如TextBox
等)的文本输入。它用于实现新的MaskedTextBox
,它只是TextBox
的子类。
它不应与KeyDown / KeyUp事件冲突,除非您将事件参数的Handled
属性设置为true