如何在 Eto 中捕获没有文本框的键盘输入
How to capture keyboard input without a text box in Eto
我有一个项目(Void) using the Eto GUI framework for .NET and Mono. I am building a Vim-like text editor which will have at least some of the modes which Vim has (and yes, I know, one does not simply...)。
我的 GUI 的基本结构只是一个 Form
,它的 Content
是一个 Drawable
,所以我对不符合常规样式的东西有最大的灵活性GUI 应用程序。当我停止正常模式时,我已经成功地将 KeyUp
处理程序附加到表单,并且我有 ZQ
命令关闭 window.
KeyUp += (sender, eventArgs) =>
{
var keyPress = eventArgs.AsVoidKeyPress();
if (keyPress != null)
{
handler(keyPress);
}
};
这对于普通模式来说很好,但对于其他模式,例如命令模式和插入模式,我希望能够捕捉特殊的组合键(即使用 CTRL[=32= 的组合) ]) 但除此之外,我只想将内容捕获为文本。这将使我能够处理 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
事件已在开发分支(即将发布的 2.1 版本)中完全实现,您可以通过 myget 提要使用它。这应该捕获来自 Drawable
和其他控件(如 TextBox
等)的文本输入。它用于实现新的 MaskedTextBox
,它只是 TextBox
的子类。
它不应与 KeyDown/KeyUp 事件冲突,除非您将事件参数的 Handled
属性 设置为 true
我有一个项目(Void) using the Eto GUI framework for .NET and Mono. I am building a Vim-like text editor which will have at least some of the modes which Vim has (and yes, I know, one does not simply...)。
我的 GUI 的基本结构只是一个 Form
,它的 Content
是一个 Drawable
,所以我对不符合常规样式的东西有最大的灵活性GUI 应用程序。当我停止正常模式时,我已经成功地将 KeyUp
处理程序附加到表单,并且我有 ZQ
命令关闭 window.
KeyUp += (sender, eventArgs) =>
{
var keyPress = eventArgs.AsVoidKeyPress();
if (keyPress != null)
{
handler(keyPress);
}
};
这对于普通模式来说很好,但对于其他模式,例如命令模式和插入模式,我希望能够捕捉特殊的组合键(即使用 CTRL[=32= 的组合) ]) 但除此之外,我只想将内容捕获为文本。这将使我能够处理 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
事件已在开发分支(即将发布的 2.1 版本)中完全实现,您可以通过 myget 提要使用它。这应该捕获来自 Drawable
和其他控件(如 TextBox
等)的文本输入。它用于实现新的 MaskedTextBox
,它只是 TextBox
的子类。
它不应与 KeyDown/KeyUp 事件冲突,除非您将事件参数的 Handled
属性 设置为 true