我有一個鉤子進入keydown事件的實現,它抑制了按鍵事件,並做了一些魔術。現在我想展示一些比「ControlKey」更友好的東西,所以你可以在下面的代碼中看到一個開關。除了我已經意識到諸如D1
,D2
等頂端的數字鍵之類的東西,然後就會出現像numpad +這樣的Add
之類的東西。另外,打印屏幕似乎不被識別。有沒有任何C#實現或方法有一個文本框,將鍵序列作爲輸入?
有什麼我失蹤了嗎?
這對我來說很難描述,但希望你明白我的意思。如果不是,我想我會回覆評論,並在我去的時候改進。
private int numKeys = 0;
private List<int> shortcutKeys = new List<int>();
private void textBoxRegionKeys_Click(object sender, EventArgs e)
{
textBoxRegionKeys.SelectAll();
}
private void textBoxRegionKeys_KeyDown(object sender, KeyEventArgs e)
{
// There are certain keys we want to ignore...
if (e.KeyCode != Keys.Delete && e.KeyCode != Keys.Back)
{
// We can handle this ourselves, thanks
e.SuppressKeyPress = true;
// Shortern what we show
string ret = e.KeyCode.ToString();
switch (ret)
{
case "ControlKey": ret = "Ctrl"; break;
case "ShiftKey": ret = "Shift"; break;
case "Menu": ret = "Alt"; break;
}
// If we haven't selected anything, we should be appending
if (textBoxRegionKeys.SelectionLength == 0)
{
if (numKeys > 0)
{
// Does our key already exist in the list?
if (shortcutKeys.Exists(x => x == e.KeyValue))
{
return;
}
textBoxRegionKeys.Text += " + ";
}
textBoxRegionKeys.Text += ret;
shortcutKeys.Add(e.KeyValue);
numKeys++;
}
else
{
textBoxRegionKeys.Text = ret;
shortcutKeys.Clear();
shortcutKeys.Add(e.KeyValue);
numKeys = 1;
}
}
}