我有一个使用.NET和Mono的Eto GUI框架的项目(Void)。我正在构建一个类似于Vim的文本编辑器,它将至少具有Vim所具有的某些模式(是的,我知道,这不只是...)。
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
活动的订阅,看是否有冲突,但是我没有得到任何回应。这是因为我将其直接附加到表单上吗?有什么方法可以在不实际使用文本框的情况下捕获文本输入?
该TextInput
事件已在developer分支(即将发布的2.1版本)中完全实现,您可以通过myget提要使用该分支。这应该捕获来自Drawable
和其他控件(如TextBox
等等)的文本输入。它用于实现new MaskedTextBox
,它只是的子类TextBox
。
除非您将事件参数的Handled
属性设置为,否则它不应与KeyDown / KeyUp事件冲突。true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句