Вы можете попытаться добавить пользовательский обработчик событий для самого WpfControl вместо попытки подключиться к WinForm KeyDown.
Вот пример.Допустим, ваш WinForm имеет тип Form1
, WpfControl равен UserControl1
, и вызывается элемент host для 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 и т. д.