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는 System.Windows.Input.KeyEventArgs
이다) 등 Ctrl 키, Alt 키,에 대한 정보를 저장
문제는 System.Windows.Input.KeyEventArgs 실제로 수식 키를 노출시키지 않는다는 것입니다
, 당신은 할 수 있습니다 'Ctrl + Z', 'Z'또는 'Ctrl'만 확인하십시오. Key 속성조차도 내가 본 것의 modifier와 key의 bitwise 조합이 아니며 단지 눌린 메인 키일뿐입니다. – Miguel
@Miguel, 업데이트보기 : e.KeyboardDevice.Modifiers가 필요합니다. –
오, 고마워, 나는 결코 그걸 해결하지 못했을거야. Upvoted. – Miguel