2009-06-05 21 views
1

我想捕獲在我的Silverlight 2應用程序內發生的任何擊鍵。沒有任何輸入字段,我正在寫一個遊戲,並且需要知道哪個箭頭鍵被按下。我最好的猜測是如何通過事件處理程序捕獲這些數據是不成功的。任何建議?如何在Silverlight應用程序中捕獲擊鍵?

回答

1

很高興再次見到你(幾乎)。

我假設你已經嘗試在根UserControl元素上連線KeyDown。這裏有一些提示:

  • 插件需要集中在看到關鍵事件之前。你必須強制用戶點擊插件才能開始。

  • 確保您沒有其他元素(如ScrollViewer)正在吃箭頭鍵事件。如果你有一個ScrollViewer,你只會看到KeyUp。

  • 沒有切換到全屏模式。

一定是一件簡單的事,你就是這樣想的。希望有所幫助。

+0

我想我已經逃避了這些缺陷。這裏是我的代碼: 命名空間ClickTheButton { \t公共部分類Level10:用戶控件 \t { \t \t公共Level10() \t \t { \t \t \t //需要初始化變量 \t \t \t的InitializeComponent(); \t \t \t Loaded + = new RoutedEventHandler(Level10_Loaded); \t \t} \t \t空隙Level10_Loaded(對象發件人,RoutedEventArgs E) \t \t { \t \t \t LayoutRoot。KeyDown + = new KeyEventHandler(LayoutRoot_KeyDown); \t \t} \t \t空隙LayoutRoot_KeyDown(對象發件人,KeyEventArgs E) \t \t { \t \t \t如果(e.Key == Key.Right) \t \t \t { \t \t \t \t // DO THE這個鍵應該這樣做。 \t \t \t} \t \t} \t}} 哇 – 2009-06-05 17:22:04

0

在您的根網格上處理KeyDown和/或KeyUp事件。

0

Silverlight 2支持KeyUp和KeyDown事件(僅我相信 - 不是KeyPress)。

在這些事件中,您得到一個KeyEventArgs對象作爲參數。您可以從中獲取KeyCode或KeyData。

0

在回顧關於此問題的不同論壇的幾個不同線索時,似乎最好在頁面(root)元素上處理您的keyevents,解析所需效果的關鍵字,並將您的命令重定向到特定控件。

this.KeyDown += (s, e) => 
    { 
     MyControl control = (MyControl)Layoutroot.FindName("controlname"); 
     if(control != null) 
     { 
      control.MyPublicFunction(e.Key); 
     } 
    }; 

MyControl

public MyPublicFunciton(Key pressedKey) 
{ 
    if(pressedKey == Key.Enter) 
    { 
     //Do something 
    } 
} 
相關問題