我正在尝试处理keydown事件但是下面的代码只处理字符串的第一个字符串而不能删除字符串的第二个字符。
private void Game_KeyDown(object sender, KeyEventArgs e)
{
if(BirdsArray[SelectedIndex].THIS_STRING.First()== (char)e.KeyData)
{
BirdsArray[SelectedIndex].THIS_STRING = BirdsArray[SelectedIndex].THIS_STRING.Remove(0, 1);
this.Validate();
}
}
在下面的代码中BirdsArray
是面板数组,THIS_STRING
是BirdsArray
中字符串对象的字符串类型。
答案 0 :(得分:1)
KeyDown事件为您提供按下的键的虚拟键代码。像Keys.A一样按A键。它只是告诉你关键,而不是关键字产生的字母。这取决于活动键盘布局(例如,它不是日本或俄罗斯的A)以及修改键是什么。 Shift是一个明显的例子,产生A
或a
。或者Alt,当它向下时,根本不会产生任何字母。
因此,如果字符串的第一个字母大写,那么您的代码将意外工作。如果没有剩下的话,你将失去运气。 A
与a
不符。
我很不清楚为什么你需要这个功能。请改为考虑KeyPress事件。它为您提供了用户在屏幕上看到的实际字母。