2012-09-07 22 views
0

我需要將System.Windows.Forms.Keys設置爲我已分配的字符串。如何將字符串值分配給System.Windows.Forms.Keys?

我正在使用第三方.Net控件,它允許我將熱鍵分配給控件,並使用System.Windows.Forms.Keys來設置熱鍵。例如:

this.systemHotKey1.SetHotKey(System.Windows.Forms.Keys.S); //Assign S as the HotKey

然而,System.Windows.Forms.Keys不會讓我一個字符串分配給它,我需要的實際值分配給它。例如,這工作得很好:

System.Windows.Forms.Keys.S (for the hotkey S on the keyboard). 



但我想要做這樣的事情:

{ 
string tmpString = "S"; 
this.systemHotKey1.SetHotKey(System.Windows.Forms.Keys.tmpString); //This does not work 
} 



可有人請告訴我一個辦法,我可以指定一個字符串系統。 Windows.Forms.Keys,所以我可以做到這一點?

回答

2

您可以通過使用KeysConverter

string tmpString = "S"; 
KeysConverter kc = new KeysConverter(); 
this.systemHotKey1.SetHotKey(kc.ConvertFromString(tmpstring)); 
+0

我得到一個錯誤,當我這樣做:參數類型「對象」是不能分配給參數類型「System.Windows.Forms.Keys」對代碼行寫着 「kc.ConvertFromString(tmpstring)」 – fraXis

+0

你試過將其轉換爲按鍵式this.systemHotKey1.SetHotKey((System.Windows.Forms.Keys)kc.ConvertFromString(tmpstring))?; – davidcoder

2

做到這一點,我認爲你是後命名空間中的KeyConverter System.Windows.Input

KeyConverter k = new KeyConverter(); 
Keys mykey = (Keys)k.ConvertFromString("Enter"); 
if (mykey == Keys.Enter) 
{ 
    Text = "Enter Key Found"; 
} 

由於鍵是一個枚舉,你也可以解析它像任何枚舉。

string str = /* name of the key */; 
Keys key; 
if(Enum.TryParse(str, true, out key)) 
{ 
    // use key 
} 
else 
{ 
    // str is not a valid key 
} 
+0

鑰匙;不適合我。我是否需要導入名稱空間以使用「Key」? – fraXis

+0

更新後,應該是Keys。我很抱歉。 –

0

希望,這將做的工作:

KeysConverter kc = new KeysConverter(); 

string tmpString = "S"; 
Keys key = (Keys)kc.ConvertFromString(tmpString); 
this.systemHotKey1.SetHotKey(key); 
+0

無法強制類型「字符串」的表達式鍵入「字節」 – fraXis

+0

我剛剛更新了答案.. @ fraXis –

相關問題