I am using this code to detect whether modifier keys are being held down in the KeyDown event of a text box.
private void txtShortcut_KeyDown(object sender, KeyEventArgs e)
{
if (e.Shift || e.Control || e.Alt)
{
txtShortcut.Text = (e.Shift.ToString() + e.Control.ToString() + e.Alt.ToString() + e.KeyCode.ToString());
}
}
How would I display the actual modifier key name and not the bool result and also display the non-modifier key being pressed at the end of the modifier key if a non-modifier key like the letter A is being pressed at the same time too? Is there a way to do it all in the same txtShortcut.Text = (); line?
use the ?: Operator
If you are using .NET 3, you will want to use the
KeysConverter
class, which has support for localized names of the modifier keys:Otherwise, you can do it yourself with the ternary operator:
You need to display the right string depending on the bool value. To do things like that in a single statement, use the ? : operator:
Generally, it's:
It works with any type.
You can check the
Control.ModifierKeys
- because that is an enum it should be more human friendly. Alternatively, just