2011-03-02 11 views
5

Form içinde bir WebBwoser var ve bir menü öğesi için kısayol olarak kullanmak için Ctrl + O tuş bileşimini yakalamak istiyorum. Benim sorunum, WebBrowser'a tıklarsam ve Ctrl + O tuşlarına basarsam, menü öğemi ne yapmak yerine, Internet Explorer iletişim kutusu açılır. Benim FormKeyPreview özelliği true olarak ayarlanmış. Ayrıca, KeyDown olay için bir olay işleyicisi ekledim, ancak WebBrowser tıklattıktan sonra çağrılmayı durdurur. Bunu nasıl düzeltebilirim?WebBrowser "top çalma" formumdan keyDown olayları

cevap

7

Bu, sorununuzu çözmelidir. Web tarayıcısının hızlandırıcı tuşlarını devre dışı bıraktı.

webBrowser1.WebBrowserShortcutsEnabled = false; 
Sen de IsWebBrowserContextMenuEnabled gerekip gerekmediğini keşfetmek isteyebilirsiniz

.

Tarayıcıda etkin olmak için bazı hızlandırıcı tuşlarına ihtiyacınız varsa, aşağıdakiler de sorununuzu çözebilir. Ancak, bu yaklaşım odağı yakalamak için bir şey gerektirir. MessageBox.Show() ve dialog.ShowDialog()

private void DoSomething() 
    { 
     webBrowser1.PreviewKeyDown += new PreviewKeyDownEventHandler(webBrowser1_PreviewKeyDown); 
    } 
    private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.O) 
     { 
      menuItem.PerformClick(); 
      // MessageBox.Show("Done"); 
     } 
    } 
+0

Peki, bir tek çözüm bu mu? Kullanıcının Ctrl + F tuşlarına basarak arama gibi başka şeyler yapmasını istiyorum. – Juan

+0

+1 ağ hızına göre beni yenersiniz, tarayıcım, MSDN'deki bağlantıyı bulmaya çalıştığımda kilitlenir :( –

+1

Yukarıda düzenlenmiş cevabımda gösterildiği gibi 'PreviewKeyDown'ı' webBrowser'de yakalayabilirsin. –

2

Sen ProcessCmdKey yöntemi geçersiz olabilir işi yapabilir:

protected override bool ProcessCmdKey(ref Meassage msg, Keys keyDaya) 
{ 
    //Trap for Key down 

    return true; //false if you want to suppress the key press. 
}