WinForm の KeyDown に接続しようとする代わりに、WpfControl 自体にカスタム イベント ハンドラーを追加することができます。
これが例です。たとえば、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 is System.Windows.Input.KeyEventArgs
) Ctrl、Alt などに関する情報を保存します。