这可能是一个微不足道的问题,但是,我还没有找到答案。我正在尝试通过添加键导航(箭头键)的可能性来改进我的 winforms 应用程序。问题是我有许多按行和列排列的按钮,而且导航起来很麻烦。UP/RIGHT 和 DOWN/LEFT 箭头只增加和减少索引,而不是在指定的方向移动。到目前为止,我唯一的想法是将按钮索引映射到二维数组并将其用作按钮的引用,但是,我没有成功。有人对我如何实现这一点有一些想法或建议吗?我在 Visual Studio 2008 和 .NET3.5 上使用 C#
Control[,] MyButtons = new Control[4,3] { {b1,b2,b3},{b4,b5,b6},{b7,b8,b9},{btn_Clear,b0,btn_Cancel}};
for(int i=0;i<4;i++)
for (int j = 0; j < 3; j++)
{
switch (e.KeyValue)
{
case 13: //return
{ e.Handled = false; break; }
case 39: //Right
{
j++;
break;
}
case 38: //Up
{
i++;
break;
}
case 37: //Left
{
j--;
break;
}
case 40: //Down
{
i--;
break;
}
}
if (e.KeyValue != 13)
{
e.Handled = true; //Don't pass on the keystroke
MyButtons[i,j].Focus(); // Set the focus to the selected control
Application.DoEvents();
}
}
使用此代码,我不断为数组的每个元素收到此错误 Invalid rank specifier: expected ',' or ']'