2014-07-13 27 views
3

我需要發送System.Windows.Forms.Keys枚舉方法SendKeys.Send(string keys)System.Windows.Forms.Keys作爲SendKeys.Send的參數

如何將Keys枚舉轉換爲與此方法兼容的字符串?

我可以做switch和嘗試,如果關鍵是不相容的關鍵之一,是這樣的:

string toSend = ""; 
switch(keys) 
{ 
    case Keys.Backspace: 
      toSend = "{BS}" 
      break; 
    case Keys.F2: 
      toSend = "{F2}" 
      break; 
    // ... 
    default: 
      toSend = keys.ToString(); 
      break; 
} 
SendKeys.Send(toSend); 

但我想知道,如果有更好的方式來做到這一點。

感謝您的幫助。

+1

SendKeys是VB6的遺產。例如,從一個非常不同的時間開始,不支持Windows密鑰。它在1998年還不存在。Pinvoke SendInput()可以像SendKeys那樣做你想做的事情。許多Google點擊。 –

+0

@HansPassant好吧,我會嘗試谷歌更多... – Sorashi

回答

-2

您可以寫爲 SendKeys.Send(「{ENTER}」); SendKeys.Send(「E」);

+0

對不起,但那不是,我要求什麼。請重新閱讀我的問題:D。我知道如何使用SendKeys方法發送密鑰,但我需要一種很好的方法將System.Windows.Forms.Keys轉換爲與SendKeys方法兼容的字符串...我需要它,因爲我正在開發一個項目,哪裏可以用戶通過按下鍵,在Form1_KeyDown中處理鍵。這些密鑰被保存,並且比我需要用SendKeys方法發送它。 – Sorashi