【发布时间】:2016-05-15 22:25:32
【问题描述】:
我是 C# 新手,并尝试制作一个键盘事件。它应该在按下 W、A、S 或 D 键时显示。首先,我的计划是显示一些图片框,然后在按下右键时更改图片。
但后来我搜索了互联网并在 Java http://docs.oracle.com/javase/8/javafx/sample-apps/KeyboardExample.zip 中找到了类似的东西 它看起来像这样:
据我所知,代码正在绘制一个带有一些字母的矩形。我查看了 msdn 并找到了一个绘制矩形的示例: https://msdn.microsoft.com/de-de/library/sx8yykw8(v=vs.110).aspx
不幸的是,我卡在了图纸上。通常我使用工具箱向表单添加内容。然后我双击它并将我的代码写在大括号内。但是工具箱里没有“矩形”,所以不知道怎么添加。
这是我目前的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Stay always on top
this.TopMost = true;
//Does not work. Removes border but you can't move the window after this
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
}
private void Form1_Load(object sender, EventArgs e)
{
//Can I delete this?
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= 65 && e.KeyChar <= 122)
{
switch (e.KeyChar)
{
//If pressed w or W
case (char)119:
case (char)87:
Console.WriteLine(e.KeyChar);
break;
//If pressed a or A
case (char)97:
case (char)65:
Console.WriteLine(e.KeyChar);
break;
//If pressed s or S
case (char)83:
case (char)115:
Console.WriteLine(e.KeyChar);
break;
//If pressed d or D
case (char)100:
case (char)68:
Console.WriteLine(e.KeyChar);
break;
//Other keys
default:
lblMessage.Text = "Key not supported";
//does not work
//timer1_Tick();
break;
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
lblMessage.Hide();
}
}
这是我的表单现在的样子:
我目前还停留在的其他事情:
如何从 Form1_KeyPress 调用计时器以在几秒钟后隐藏 lblMessage?
移除边框而不失去移动窗口的能力(例如
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;)
编辑:我将代码更改为最新的工作状态。
【问题讨论】: