【问题标题】:Can't use KeyDownEvent after adding Button [duplicate]添加按钮后无法使用 KeyDownEvent [重复]
【发布时间】:2021-06-26 17:35:36
【问题描述】:

我在 C# Visual Studio 中使用了 Winform。起初我有一个 OnKeyDown 并且效果很好。在此之后,我在表单中添加了一个按钮。我从工具箱中拖出按钮并双击它。然后它为我生成了 public void 函数。

Button 现在也可以正常工作,但我不能再使用 KeyEvent。我需要改变什么?

protected override void OnKeyDown(KeyEventArgs e)
{
    Debug.WriteLine("hello Keyevent");
}

private void button1_Click_1(object sender, EventArgs e)
{
    Debug.WriteLine("hello button");
}

绘画方法:

protected override void OnPaint(PaintEventArgs e)
{
    grafik = e.Graphics;
    using (Font font1 = new Font("Arial", 20, FontStyle.Regular, GraphicsUnit.Point))
    {
        StringFormat TextFormat = new StringFormat()
        {
            Alignment = StringAlignment.Center,
        };

        Rectangle myRectangle = new Rectangle();

        for (int i = 0; i < maze.GetLength(0); i++)
        {
            for (int j = 0; j < maze.GetLength(1); j++)
            {
                string sign = char.ToString(Labyrinth[i, j]);
                myRectangle.Location = new Point(i * 30, j * 30);
                myRectangle.Size = new Size(10, 10);

                grafik.DrawString(sign, font1, red, myRectangle, TextFormat);
            }
        }
    }
}

【问题讨论】:

  • 您需要处理窗口中的所有按键还是只处理特定的(对于某些按钮或其他控件)?
  • 我只想按箭头键。然后我表格上的一个符号应该移动(上,下,左,右)。只是想用 Debug.Writline 测试表单是否会理解我移动键并且如果我按下按钮。
  • 您应该将“KeyDown”事件分配给某个控件。然后,当您将注意力集中在特定控件上时,就会触发该事件。就像我们将点击事件分配给按钮一样,当我们点击该特定按钮时会触发事件。
  • ... “我的表单上的符号应该移动” ... 是什么意思?这个“符号”是什么,它是一种什么样的控制。从技术上讲,具有焦点的表单上的任何控件都将收到 Key Down 事件,而不是表单本身。
  • 我刚刚创建了一个二维数组。在这个数组中,以“X”为边界绘制一个迷宫,以“O”为玩家。我可以通过更改 2D-Array 上的值来移动迷宫中的玩家,并使用“refresh()”重新绘制它。然后将调用 OnPain 方法。一切正常,我可以移动它。就在我在我的表单中添加一个按钮之后,只有这个按钮现在可以工作了。

标签: c# winforms button keyevent


【解决方案1】:

我想我现在明白了。我只是用了方法:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

而不是

protected override void OnKeyDown(KeyEventArgs e)

我现在可以用箭头键控制我的表单

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 2018-05-22
    • 2017-04-12
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    相关资源
    最近更新 更多