Я новичок в C# и пытаюсь сделать событие клавиатуры. Он должен отображаться при нажатии клавиш W, A, S или D. Сначала мой план состоял в том, чтобы показать некоторый pictureBox и просто изменить изображение, если нажаты правые клавиши.C# клавиатура обработчик события прямоугольник
Но я искал в интернете нашел в нечто подобное в 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 после s ome секунд?
Удалить границу без потери возможности переместить окно (например, с
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
, например)
EDIT: Я изменил код новейшего рабочего состояния.
Я пытался изменить цвет с 'pictureBox1.BackColor = Color.Red;', но он не работает. Я думаю, это потому, что это всего лишь фотография, которую я импортировал с помощью графического ящика? – user3772108
Также как работает второй вариант? Что вы имеете в виду с большей силой? Будет ли он лучше кодироваться, чем с картинкой? – user3772108
Спасибо за помощь с таймером. Теперь это выглядит просто. :) – user3772108