2010-06-08 2 views
13

많은 컨트롤이 포함 된 상위 폼이 있습니다. 내가하려는 것은 그 양식에 대한 모든 주요 프레스를 걸러내는 것이다. 문제는 양식에있는 컨트롤 중 하나에 포커스가있는 경우 상위 폼에서 키 누르기 이벤트가 발생하지 않으므로 키 다운 이벤트를 어떻게 캡처합니까?C# .NET 폼에서 키 누르는 방법

답변

34

설정 양식에 true로 KeyPreview 당신은 그들을 잡을 것 : MSDN

3
myForm : Form 
{ 

    public ChildForm() 
    {  
     KeyPress += KeyPressHandler; 
    } 

    public KeyPressHandler(object sender, KeyPressEventArgs e) 
    { 
     if (_parent != null) 
     { 
      _parent.NotifyKeyPress(e); 
     } 
    } 
} 

이 것보다 귀하의 경우 스위트 룸

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F1) 
    { 
     MessageBox.Show("You pressed the F1 key"); 
     return true; // indicate that you handled this keystroke 
    } 

    // Call the base class 
    return base.ProcessCmdKey(ref msg, keyData) 
} 
관련 문제