如何在KeyState中获得感叹号?

时间:2013-05-31 21:28:19

标签: c# xna-4.0

我一直在尝试在我的游戏中实现一个聊天系统,到目前为止,我接受它接受文本字符串,我正在尝试实现特殊字符,如句号,逗号和撇号。

例如,这是您通常获取句点和逗号的方式:

            if (currentKeyboardState.IsKeyDown(Keys.OemPeriod);
            if (currentKeyboardState.IsKeyDown(Keys.OemComma);

但是,在这种情况下,我找不到与感叹号(!)相关的任何内容。 我知道我可以检查是否按下Shift键和1键,但在这种情况下,如果我尝试做的话

            if (currentKeyboardState.IsKeyDown(Keys.LeftShift) && (currentKeyboardState.IsKeyDown(Keys.D1))
               text += "!";
               break;

每次按Shift或1键时都会添加感叹号。 这意味着它会产生感叹号,即使预期的字符是1

感谢您的任何意见!

1 个答案:

答案 0 :(得分:0)

我在一些Windows窗体中徘徊了一下,看看我是否可以重现这个问题。 (我不能......)了解你正在使用XNA,默认情况下没有一种简单的方法可以输入文字,因为用户输入了,也许你需要重温一下进入你试图完全捕获用户输入的方式。围绕捕获每个键进行编程似乎有点多,包括逗号,句号等键。

查看同一个问题here提出的另一个问题。

基本上您将需要获取插件或获取实用程序类来处理键盘输入。在这个thread in particular中,他们有一个TranslateChar()方法,它将切换几种情况,包括您心爱的感叹号:

case Keys.D1: return (shift) ? '!' : '1';

希望这些信息有用!祝你好运!

相关问题