您可以嘗試爲WpfControl本身添加自定義事件處理程序,而不是嘗試連接到WinForm的KeyDown。
下面是例子。假設您的WinForm類型爲Form1
,WpfControl爲UserControl1
,並且調用了WpfControl的元素主機(將不會猜到)) - elementHost。
public Form1()
{
InitializeComponent();
elementHost.ChildChanged += ElementHost_ChildChanged;
}
private void ElementHost_ChildChanged(object sender, ChildChangedEventArgs e)
{
var ctr = (elementHost.Child as UserControl1);
if (ctr == null)
return;
ctr.KeyDown += ctr_KeyDown;
}
void ctr_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
/* your custom handling for key-presses */
}
UPD:e.KeyboardDevice.Modifiers
(e是System.Windows.Input.KeyEventArgs
)用於存儲Ctrl,Alt等信息
的問題是,System.Windows.Input.KeyEventArgs實際上並沒有公開的組合鍵,因此您可以不檢查'Ctrl + Z',只檢查'Z'或'Ctrl'。 即使Key屬性不是我所見過的修飾符和鍵的按位組合,它只是按下的主鍵。 – Miguel 2010-12-04 01:57:00