【发布时间】: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