0

my requirement is to write the keyup events and write it on a label,

I have developed the functionality for it, but it not efficient or optimized, I need some help to optimize the code, and some direction to proceed. I'm very new to c#, so please bear with me guys thanks in advance. I'll include the code for your reference.

        private void Form1_KeyUp(object sender, KeyEventArgs e)

        label1.Text = (Convert.ToBoolean(GetAsyncKeyState(Keys.LShiftKey)) ? "LShift" : "")
        + (Convert.ToBoolean(GetAsyncKeyState(Keys.RShiftKey)) ? "RShift" : "")
        + (Convert.ToBoolean(GetAsyncKeyState(Keys.LControlKey)) ? "Lcontrol" : "")
        + (Convert.ToBoolean(GetAsyncKeyState(Keys.RControlKey)) ? "Rcontrol" : "")
        + (Convert.ToBoolean(GetAsyncKeyState(Keys.LMenu)) ? "L Alt" : "")
        + (e.KeyCode == Keys.Escape ? "Ëscape" : "")
        + (e.KeyCode == Keys.Enter ? "Return" : "")
        + (e.KeyCode == Keys.CapsLock ? "CapsLock" : "")
        + (e.KeyCode == Keys.LWin ? "Windows key" : "")
        + (e.KeyCode == Keys.D0 ? " D0 " : "")
        + (e.KeyCode == Keys.D1 ? " D1 " : "")
        + (e.KeyCode == Keys.D2 ? " D2 " : "")
        + (e.KeyCode == Keys.D3 ? " D3 " : "")
        + (e.KeyCode == Keys.D4 ? " D4 " : "")
        + (e.KeyCode == Keys.D5 ? " D5 " : "")
        + (e.KeyCode == Keys.D6 ? " D6 " : "")
        + (e.KeyCode == Keys.D7 ? " D7 " : "")
        + (e.KeyCode == Keys.D8 ? " D8 " : "")
        + (e.KeyCode == Keys.D9 ? " D9 " : "")
        + (e.KeyCode == Keys.NumPad0 ? "Numpad0 " : "")
        + (e.KeyCode == Keys.NumPad1 ? "Numpad1 " : "")
        + (e.KeyCode == Keys.NumPad2 ? "Numpad2 " : "")
        + (e.KeyCode == Keys.NumPad3 ? "Numpad3 " : "")
        + (e.KeyCode == Keys.NumPad4 ? "Numpad4 " : "")
        + (e.KeyCode == Keys.NumPad5 ? "Numpad5 " : "")
        + (e.KeyCode == Keys.NumPad6 ? "Numpad6 " : "")
        + (e.KeyCode == Keys.NumPad7 ? "Numpad7 " : "")
        + (e.KeyCode == Keys.NumPad8 ? "Numpad8 " : "")
        + (e.KeyCode == Keys.NumPad9 ? "Numpad9 " : "")
        + (e.KeyCode == Keys.A ? " A" : "")
              + (e.KeyCode == Keys.B ? " B" : "")
              + (e.KeyCode == Keys.C ? " C" : "")
              + (e.KeyCode == Keys.D ? " D" : "")
              + (e.KeyCode == Keys.E ? " E" : "")
              + (e.KeyCode == Keys.F ? " F" : "")
              + (e.KeyCode == Keys.G ? " G" : "")
              + (e.KeyCode == Keys.H ? " H" : "")
              + (e.KeyCode == Keys.I ? " I" : "")
              + (e.KeyCode == Keys.J ? " J" : "")
              + (e.KeyCode == Keys.K ? " K" : "")
              + (e.KeyCode == Keys.L ? " L" : "")
              + (e.KeyCode == Keys.M ? " M" : "")
              + (e.KeyCode == Keys.N ? " N" : "")
              + (e.KeyCode == Keys.O ? " O" : "")
              + (e.KeyCode == Keys.P ? " P" : "")
              + (e.KeyCode == Keys.Q ? " Q" : "")
              + (e.KeyCode == Keys.R ? " R" : "")
              + (e.KeyCode == Keys.S ? " S" : "")
              + (e.KeyCode == Keys.T ? " T" : "")
              + (e.KeyCode == Keys.U ? " U" : "")
              + (e.KeyCode == Keys.V ? " V" : "")
              + (e.KeyCode == Keys.W ? " W" : "")
              + (e.KeyCode == Keys.X ? " X" : "")
              + (e.KeyCode == Keys.Y ? " Y" : "")
              + (e.KeyCode == Keys.Z ? " Z" : "")
              + (e.KeyCode == Keys.Oem1 ? "Semi colon" : "")
              + (e.KeyCode == Keys.Oem2 ? "Slash" : "")
              + (e.KeyCode == Keys.Oem3 ? "Left quote" : "")
              + (e.KeyCode == Keys.Oem4 ? "Open Brackets" : "")
              + (e.KeyCode == Keys.Oem5 ? "Backslash" : "")
              + (e.KeyCode == Keys.Oem6 ? "Close Brackets" : "")
              + (e.KeyCode == Keys.Oem7 ? "Double quotes" : "")
              + (e.KeyCode == Keys.Oem8 ? "Oem8" : "")
              + (e.KeyCode == Keys.OemPeriod ? "period" : "")
              + (e.KeyCode == Keys.Oemcomma ? "comma" : "")
              + (e.KeyCode == Keys.OemMinus ? "Oem minus" : "")
              + (e.KeyCode == Keys.Oemplus ? "Oem equals" : "")
              + (e.KeyCode == Keys.NumLock ? "NumLock" : "")
              + (e.KeyCode == Keys.Add ? "Add" : "")
              + (e.KeyCode == Keys.Subtract ? "Subtract" : "")
              + (e.KeyCode == Keys.Multiply ? "Multiply" : "")
              + (e.KeyCode == Keys.Divide ? "Divide" : "")
              + (e.KeyCode == Keys.Decimal ? "Decimal" : "")
              + (e.KeyCode == Keys.F1 ? "F1 pressed" : "")
              + (e.KeyCode == Keys.F2 ? "F2 pressed" : "")
              + (e.KeyCode == Keys.F3 ? "F3 pressed" : "")
              + (e.KeyCode == Keys.F4 ? "F4 pressed" : "")
              + (e.KeyCode == Keys.F5 ? "F5 pressed" : "")
              + (e.KeyCode == Keys.F6 ? "F6 pressed" : "")
              + (e.KeyCode == Keys.F7 ? "F7 pressed" : "")
              + (e.KeyCode == Keys.F8 ? "F8 pressed" : "")
              + (e.KeyCode == Keys.F9 ? "F9 pressed" : "")
              + (e.KeyCode == Keys.F10 ? "F10 pressed" : "")
              + (e.KeyCode == Keys.F11 ? "F11 pressed" : "")
              + (e.KeyCode == Keys.F12 ? "F12 pressed" : "")
              + (e.KeyCode == Keys.VolumeDown ? "Volume Down" : "")
              + (e.KeyCode == Keys.VolumeUp ? "Volume Up" : "")
              + (e.KeyCode == Keys.VolumeMute ? "Volume Mute" : "")
              + (e.KeyCode == Keys.MediaPlayPause ? "Play / Pause" : "")
              + (e.KeyCode == Keys.MediaNextTrack ? "Play Next" : "")
              + (e.KeyCode == Keys.MediaPreviousTrack ? "Play Previous" : "")
              + (e.KeyCode == Keys.NumLock ? "NumLock" : "")
              + (e.KeyData == Keys.Tab ? "Tab" : "");
Santh K
  • 3
  • 2
  • Create a method to get the friendly key name, like [this](https://stackoverflow.com/a/10001073/3110834), then the code will be label1.Text += GetFriendlyName(e.KeyCode); – Reza Aghaei Jan 05 '22 at 06:36

2 Answers2

0

For the most part using the string formatter eg. $"{key}" for an enumeration will work. When the are not human friendly then a more specific implementation is needed - as suggested by @Reza Aghaei.

Something like

switch(e.Keycode)
{
    case Keys.Oem1:
        label1Text = $"{Semi Colon}";
        break; 
    case default:
        label1Text = $"{key}";
        break;
}

As far as I remember, holding key combinations - like 'Shift' - are extra parts in the event so will need looking at too.

0

You can simplify your code by using e.KeyCode.ToString(). This will give you the key 'text' for most of the keys how you want it. However, for some keys, you need to use conditions. Example:

    private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
        string keyText = e.KeyCode.ToString();
        keyText =
            keyText == "Oem1" ? "Semi colon" :
            keyText == "Oem2" ? "Slash" :
            keyText == "Oem3" ? "Left quote" :
            keyText == "Oem4" ? "Open Brackets" :
            keyText == "Oem5" ? "Backslash" :
            keyText == "Oem6" ? "Close Brackets" :
            keyText == "Oem7" ? "Double quotes" :
            keyText == "OemPeriod" ? "period" :
            keyText == "Oemcomma" ? "comma" :
            keyText == "OemMinus" ? "Oem minus" :
            keyText == "Oemplus" ? "Oem equals" : keyText;


       label1.Text+= keyText;
    }
Jake
  • 1,560
  • 2
  • 17
  • 25