2013-01-16 47 views
6

我有一個窗體窗體,當用戶按下時需要輸入輸入將焦點設置到下一個控件。 任何想法如何實現此 (不使用按鍵事件)當按下回車鍵時更改焦點控制

+1

沒有KeyPress事件,你可以不知道用戶按下Enter鍵, –

+0

怎麼樣ProcessCmdKey事件 – user1659922

回答

6

您可以捕獲您的窗體的KeyPreview。設置的KeyPreview爲True構造函數,然後你可以使用這個:

protected override bool ProcessKeyPreview(ref Message m) 
{ 
    if (m.Msg == 0x0100 && (int)m.WParam == 13) 
    { 
     this.ProcessTabKey(true); 
    } 
    return base.ProcessKeyPreview(ref m); 
} 
+1

+1:我從來不知道這個 – horgh

0

如果你不想使用按鍵事件,你將不得不重寫ProcessCmdKey

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Return) 
    { 
     MessageBox.Show("You pressed the Enter key"); 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+0

關注下一控制我必須使用SendKeys.Send(「{標籤}」) – user1659922

1

您可以使用ProcessCmdKey檢查是否KEYDATA包含輸入鍵然後使用SelectNextControl方法設置焦點。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData.HasFlag(Keys.Enter)) 
    { 
     SelectNextControl(ActiveControl,true,true,true,true); 
     return true; //Stops the beeping 
    } 

    return base.ProcessCmdKey(ref msg, keyData); 
} 
相關問題