Как сделать так чтобы избежать повторения буквы в элементе textbox1 при долгом нажатии на одну клавишу?
Как сделать так чтобы избежать повторения буквы в элементе textbox1 при долгом нажатии на одну клавишу? Вот код:
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
int time;
bool up;
private Dictionary<Keys, Control> _keyMap;
public Form1()
{
InitializeComponent();
time = 0;
up = false;
this.KeyUp += new KeyEventHandler(Form1_KeyUp);
_keyMap = new Dictionary<Keys, Control>();
_keyMap.Add(Keys.A, button1); //A
_keyMap.Add(Keys.S, button2); //S
_keyMap.Add(Keys.D, button3); //D
_keyMap.Add(Keys.F, button6); //F
_keyMap.Add(Keys.G, button5); //G
_keyMap.Add(Keys.H, button4); //H
_keyMap.Add(Keys.J, button9); //J
_keyMap.Add(Keys.K, button8); //K
_keyMap.Add(Keys.L, button7); //L
_keyMap.Add(Keys.Z, button22); //Z
_keyMap.Add(Keys.X, button21); //X
_keyMap.Add(Keys.C, button20); //C
_keyMap.Add(Keys.V, button19); //V
_keyMap.Add(Keys.B, button18); //B
_keyMap.Add(Keys.N, button17); //N
_keyMap.Add(Keys.M, button16); //M
_keyMap.Add(Keys.LWin, button42); // LWin
_keyMap.Add(Keys.Q, button32); //Q
_keyMap.Add(Keys.W, button31); //W
_keyMap.Add(Keys.E, button30); //E
_keyMap.Add(Keys.R, button29); //R
_keyMap.Add(Keys.T, button28); //T
_keyMap.Add(Keys.Y, button27); //Y
_keyMap.Add(Keys.U, button26); //U
_keyMap.Add(Keys.I, button25); //I
_keyMap.Add(Keys.O, button24); //O
_keyMap.Add(Keys.P, button23); //P
_keyMap.Add(Keys.D1, button59); //1
_keyMap.Add(Keys.D2, button58); //2
_keyMap.Add(Keys.D3, button57); //3
_keyMap.Add(Keys.D4, button56); //4
_keyMap.Add(Keys.D5, button55); //5
_keyMap.Add(Keys.D6, button54); //6
_keyMap.Add(Keys.D7, button53); //7
_keyMap.Add(Keys.D8, button52); //8
_keyMap.Add(Keys.D9, button51); //9
_keyMap.Add(Keys.D0, button63); //0
_keyMap.Add(Keys.OemCloseBrackets,button33); //}
_keyMap.Add(Keys.OemOpenBrackets, button12); //{
_keyMap.Add(Keys.OemPeriod, button14); //>
_keyMap.Add(Keys.Oemtilde, button60); //Ё
_keyMap.Add(Keys.Oemcomma, button15); //<
_keyMap.Add(Keys.OemMinus, button62); //-
_keyMap.Add(Keys.OemPipe, button37); //|
_keyMap.Add(Keys.Oemplus, button61); //+
_keyMap.Add(Keys.OemQuotes, button10); //Ковычки
_keyMap.Add(Keys.OemSemicolon, button11); //Точка я запятой
_keyMap.Add(Keys.OemQuestion, button13); // Вопросительный знак Англ ракладка
_keyMap.Add(Keys.Space, button44); //Пробел
_keyMap.Add(Keys.Escape, button77); //ESC
_keyMap.Add(Keys.CapsLock, button35); //CapsLock
_keyMap.Add(Keys.Tab, button34); //Tab
_keyMap.Add(Keys.F1, button76); //F1
_keyMap.Add(Keys.F2, button75); //F2
_keyMap.Add(Keys.F3, button74); //F3
_keyMap.Add(Keys.F4, button73); //F4
_keyMap.Add(Keys.F5, button72); //F5
_keyMap.Add(Keys.F6, button71); //F6
_keyMap.Add(Keys.F7, button70); //F7
_keyMap.Add(Keys.F8, button69); //F8
_keyMap.Add(Keys.F9, button68); //F9
_keyMap.Add(Keys.F10, button67); //F10
_keyMap.Add(Keys.F11, button66); //F11
_keyMap.Add(Keys.F12, button65); //F12
_keyMap.Add(Keys.Back, button64); //BACKSPACE
_keyMap.Add(Keys.Delete, button78); //Delete
_keyMap.Add(Keys.Down, button49); //Стрелка Вниз
_keyMap.Add(Keys.Left, button47); //Стрелка Влево
_keyMap.Add(Keys.Up, button50); //Стрелка ВВерх
_keyMap.Add(Keys.Right, button48); //Стрелка Вправо
_keyMap.Add(Keys.ShiftKey, button36); // Лeвый Shift
_keyMap.Add(Keys.ControlKey, button40); //Левый CTRL
_keyMap.Add(Keys.Menu, button43); // Левый Alt
_keyMap.Add(Keys.RShiftKey, button39); // Лeвый Shift
_keyMap.Add(Keys.RControlKey, button45); //Левый CTRL
_keyMap.Add(Keys.RMenu, button46); // Левый Alt
_keyMap.Add(Keys.Enter, button38); //Enter
_keyMap.Add(Keys.Snapshot, button79);//Snapshot
_keyMap.Add(Keys.PageUp, button94); //PageDown
_keyMap.Add(Keys.PageDown, button93); //PageDown
_keyMap.Add(Keys.Divide, button90); // /
_keyMap.Add(Keys.Multiply, button89); //*
_keyMap.Add(Keys.Add, button100); //+ NumLock
_keyMap.Add(Keys.Subtract, button92); //- NumLock
_keyMap.Add(Keys.None, button92); //- NumLock
_keyMap.Add(Keys.NoName, button92); //- NumLock
_keyMap.Add(Keys.End, button95); // End
_keyMap.Add(Keys.Home, button96); //Home
_keyMap.Add(Keys.NumLock, button91); //NumLock
_keyMap.Add(Keys.NumPad0, button98); //NumPad0
_keyMap.Add(Keys.NumPad1, button82); //NumPad1
_keyMap.Add(Keys.NumPad2, button81); //NumPad2
_keyMap.Add(Keys.NumPad3, button41); //NumPad3
_keyMap.Add(Keys.NumPad4, button85); //NumPad4
_keyMap.Add(Keys.NumPad5, button84); //NumPad5
_keyMap.Add(Keys.NumPad6, button83); //NumPad6
_keyMap.Add(Keys.NumPad7, button88); //NumPad7
_keyMap.Add(Keys.NumPad8, button87); //NumPad8
_keyMap.Add(Keys.NumPad9, button86); //NumPad9
foreach (Control item in Controls)
{
MethodInfo methodInfo = typeof(Control).GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic);
methodInfo?.Invoke(item, new object[] { ControlStyles.Selectable, false });
}
}
void Form1_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.ShiftKey:
button39.BackColor = Color.Gray;
break;
case Keys.Delete:
button97.BackColor = Color.Gray;
break;
case Keys.Enter:
button99.BackColor = Color.Gray;
break;
case Keys.Menu:
button45.BackColor = Color.Gray;
break;
case Keys.ControlKey:
button46.BackColor = Color.Gray;
break;
}
try
{
Control button = _keyMap[e.KeyCode];
button.BackColor = Color.Gray;
}
catch
{
}
textBox2.Text = (System.Environment.TickCount - time).ToString();
up = false;
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.ShiftKey:
button39.BackColor = Color.Green;
break;
case Keys.Delete:
button97.BackColor = Color.Green;
break;
case Keys.Enter:
button99.BackColor = Color.Green;
break;
case Keys.Menu:
button45.BackColor = Color.Green;
break;
case Keys.ControlKey:
button46.BackColor = Color.Green;
break;
}
if (!up)
{
up = true;
time = System.Environment.TickCount;
}
foreach (Control item in Controls)
{
MethodInfo methodInfo = typeof(Control).GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic);
methodInfo?.Invoke(item, new object[] { ControlStyles.Selectable, false });
}
try
{
Control button = _keyMap[e.KeyCode];
button.BackColor = Color.Green;
textBox1.Text = " < " + e.KeyCode + " > " + textBox1.Text;
}
catch
{
panel1.Visible = true;
panel1.BackColor = Color.Red;
textBox3.Text = "Ошибка!!!";
timer1.Start();
}
}
private void Button80_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
Close();
}
private void timer1_Tick(object sender, EventArgs e)
{
textBox3.Text=" " ;
panel1.Visible = false;
}
}
}