2013-01-16 25 views
6

Tôi có biểu mẫu cửa sổ, tôi cần khi người dùng nhấn Nhập đặt tiêu điểm để kiểm soát tiếp theo. Bất kỳ ý tưởng nào về cách đạt được điều này (mà không sử dụng sự kiện Nhấn phím)Thay đổi điều khiển tiêu cự khi nhấn phím quan trọng

+1

Nếu không có sự kiện KeyPress bạn không thể biết rằng người dùng nhấn phím Enter –

+0

gì về ProcessCmdKey kiện – user1659922

Trả lời

6

Bạn có thể nắm bắt KeyPreview biểu mẫu của mình. Đặt KeyPreview true trong các nhà xây dựng và sau đó bạn có thể sử dụng này:

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: Tôi không bao giờ biết – horgh

0

Nếu bạn không muốn sử dụng các sự kiện nhấn phím bạn sẽ phải ghi đè 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

này để tập trung điều khiển tiếp theo tôi phải sử dụng SendKeys.Send ("{ Chuyển hướng}") – user1659922

1

Bạn có thể sử dụng ProcessCmdKey kiểm tra nếu keyData chứa các phím Nhập Sau đó, sử dụng phương pháp SelectNextControl để đặt trọng tâm của bạn.

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); 
} 
Các vấn đề liên quan