TableLayoutPanelにボタン配置したんだけど矢印キーでの移動はTabIndex順になっちゃうのね・・・
普通に縦横に動いてよ。
TabIndexを座標にして、
----------------
11 21 31
12 22 32
13 23 33
----------------
矢印押下時はこれを検索して次のに移動するようにしようかな~
------------------------------------------------------
private void button_PreviewKeyDown(object sender, Previe
wKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Right:
for (int moveX = 10; moveX <= 20; moveX += 10)
{
//10の位がx座標
int tabindex = this.ActiveControl.TabIndex + moveX;
//右端の時
if (tabindex > 40)
{
tabindex = tabindex - 30;
}
bool focus = false;
//子コントロール
foreach (Control con in tableLayoutPanel.Controls)
{
//ボタン
if (con is ButtonBase)
{
if (con.TabIndex == tabindex)
{
con.Focus();
focus = true;
break;
}
}
}
if (focus) break;
}
//元々の動きをキャンセル
e.IsInputKey = true;
break;
case Keys.Left:
for (int moveX = 10; moveX <= 20; moveX += 10)
{
//10の位がx座標
int tabindex = this.ActiveControl.TabIndex - moveX;
//右端の時
if (tabindex < 10)
{
tabindex = tabindex + 30;
}
bool focus = false;
//子コントロール
foreach (Control con in tableLayoutPanel.Controls)
{
//ボタン
if (con is ButtonBase)
{
if (con.TabIndex == tabindex)
{
con.Focus();
focus = true;
break;
}
}
}
if (focus) break;
}
//元々の動きをキャンセル
e.IsInputKey = true;
break;
}
}
------------------------------------------------------
0 件のコメント:
コメントを投稿