面板焦点问题

时间:2014-05-10 18:43:18

标签: c# winforms

我正在尝试在Windows.Form应用程序中制作一个简单的游戏:“Gomoku”或“Five in a Row”。 我的程序在启动时看起来像这样,我不按Tab键Normal look

但是当我按Tab键时,它看起来像这样: Wrong look

该板是一个面板,每当我按下左,右,上,下,A,D,W和S时,它会从所选方向的角移动两个X.

当我正在为Legt和右手打开时,它正在切换tabPages,所以我添加了一个textBox,并将焦点放在他身上:

if (textBox1.CanFocus) 
    textBox1.Focus();

Design look

这就是我在棋盘上添加背景颜色和线条的方式(游戏面板。

private void PuneFundal(Graphics g)
    {
        g.Clear(Color.FromArgb(150, 124, 92));
    }

private void DeseneazaLinie(Graphics g, Point p1, Point p2)
{
    Pen p = new Pen(Color.Black);
    g.DrawLine(p, p1, p2);
}

private void TrasareLinii(Graphics g)
{
    for (int i = 6, k = 0; k < 20; i += 16, k++)
        DeseneazaLinie(g, new Point(5, i), new Point(309, i));
    for (int i = 6, k = 0; k < 20; i += 16, k++)
        DeseneazaLinie(g, new Point(i, 5), new Point(i, 309));
}

private void Start_game()
{
    tabControl1.SelectedTab = tabPage2;
    Graphics g = game_panel.CreateGraphics();

    PuneFundal(g);
    TrasareLinii(g);
}

按Tab键时,如何才能正常工作?

1 个答案:

答案 0 :(得分:0)

当您致电tabControl1.SelectedTab = tabPage2;时,这意味着您将tabPage2设置为当前所选标签页,因此它会获得焦点。

我建议采用以下解决方案:

  1. 选择标签页后,您始终可以设置TextBox1的焦点。
  2. 或使用接受焦点的自定义可选面板。请参阅@HansPassant answer here