Доброе время суток. Возник такой вопрос в ходе разработки мини-программы. Суть такова - я нажимаю клавиши, а именно - стрелочки на клавиатуре, и они должны поменять свой цвет. Со цветом всё в порядке, но на клавиши кнопки не хотят реагировать. Если нажать мышкой на Button - она поменяет свой цвет, но на клавиатуру не реагирует : ( Подскажите, что в коде не так?
Заранее спасибо!
Пишу на C#.
KeyPreview - включён!
Использовал KeyDown. !
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Keyboard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}
public void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
public void button1_Click(object sender, EventArgs e)
{
button1.BackColor = Color.Green;
}
public void button2_Click(object sender, EventArgs e)
{
button2.BackColor = Color.Green;
}
public void button4_Click(object sender, EventArgs e)
{
button4.BackColor = Color.Green;
}
public void button3_Click(object sender, EventArgs e)
{
button3.BackColor = Color.Green;
}
public void button5_Click(object sender, EventArgs e)
{
button1.BackColor = Color.Gainsboro;
button2.BackColor = Color.Gainsboro;
button3.BackColor = Color.Gainsboro;
button4.BackColor = Color.Gainsboro;
}
*public void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == (char)Keys.Up)
{
button1.PerformClick();
}
else if (e.KeyValue == (char)Keys.Down)
{
button2.PerformClick();
}
else if (e.KeyValue == (char)Keys.Right)
{
button3.PerformClick();
}
else if (e.KeyValue == (char)Keys.Left)
{
button4.PerformClick();
}
}
}
}
Подскажите, я добавил новые клавиши и у меня не хотят работать: Shift, Alt и Ctrl. Остальные работают, в чём может быть проблема и как это обойти? ( естественно, клавиши на самой клавиатуре работают прекрасно. )
Я попробовал сделать вот так с клавишами Ctrl, Alt и Shift. Но это тоже не работает
Пробовал таким же образом сделать KeyDown/KeyUp в обработчике событий, результата нет.
if (keyData == Keys.Control)
button11.BackColor = Color.Green;
if (keyData == Keys.Alt)
button12.BackColor = Color.Green;
if (keyData == Keys.Shift)
button7.BackColor = Color.Green;