我使用XNA GS 4.0在C#中编程。
我首先尝试捕获我管理的键盘输入事件。即当按下某个键时,由于IMessageFilter扫描键盘输入,它会引发一个键事件。
这可能听起来有点多余,但由于XNA停止触发默认的Form键事件,这似乎是一个简单的解决方案。
既然我已经从Message拼接了Message结构和KeyEventArgs结构,我可以简单地在主代码文件中触发一个事件。
我遇到的问题在于我想要一个文本框来正常响应这些关键事件消息。
问题:
我想将消息发送到文本框(扩展类),以便它可以读取必要的数据并像往常一样响应,而不必将消息转换为单个字符以手动追加。感谢。
编辑: 此问题的源代码很难提供此问题,因为此时实际上代码非常少。
现在我能真正给你的是我用来捕捉windows消息的方法
public class KeyboardFilter : IMessageFilter
{
public event EventHandler KeyboardMessage;
// This method is only used to detect key presses, it will NEVER remove any messages from the message loop
public bool PreFilterMessage(ref Message m)
{
if (KeyboardMessage != null)
KeyboardMessage(m, EventArgs.Empty);
return false; // Allow the message to be used by the message loop
}
}
此过滤器的输出是Message对象。我需要一些方法让TextBox使用它并手动更新其Text属性,因为XNA阻止了正常的键盘输入。我想使用TextBox中内置的东西,如果它存在但是如果需要的话,我可以为每个单独的键自己手动附加字符。我只是想知道是否存在更优雅的解决方案。