2011-03-02 13 views
5

मेरे पास WebBwoserForm के अंदर है, और मैं मेनू आइटम के लिए शॉर्टकट के रूप में उपयोग करने के लिए Ctrl + O कुंजी संयोजन को कैप्चर करना चाहता हूं। मेरी समस्या यह है कि यदि मैं WebBrowser पर क्लिक करता हूं और मैं Ctrl + O दबाता हूं, तो मेरा मेनू आइटम करने के बजाए, एक इंटरनेट एक्सप्लोरर संवाद पॉप अप करता है। मेरे पास Form की KeyPreview संपत्ति true पर सेट है। इसके अलावा, मैंने KeyDown ईवेंट के लिए एक ईवेंट हैंडलर जोड़ा, लेकिन WebBrowser पर क्लिक करने के बाद इसे कॉल करना बंद हो जाता है। मैं इसे कैसे ठीक करूं?वेबब्रोसर मेरे फॉर्म से कीडाउन घटनाओं को "चोरी करता है"

उत्तर

7

यह आपकी समस्या का समाधान करना चाहिए। यह वेब ब्राउज़र की त्वरक कुंजी अक्षम कर दिया।

webBrowser1.WebBrowserShortcutsEnabled = false; 

आप कि क्या आप IsWebBrowserContextMenuEnabled रूप में अच्छी तरह की जरूरत है पता लगाने के लिए चाहते हो सकता है।

यदि आपको कुछ एक्सेलेरेटर कुंजी ब्राउज़र पर सक्रिय होने की आवश्यकता है तो निम्न समस्याएं भी हल हो सकती हैं। हालांकि, इस दृष्टिकोण को ध्यान केंद्रित करने के लिए कुछ चाहिए। MessageBox.Show() और 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

ठीक है, यह है कि केवल संभव समाधान? मैं चाहता हूं कि उपयोगकर्ता Ctrl + F दबाकर खोज जैसे अन्य सामान करने में सक्षम हो। – Juan

+0

+1 आपने मुझे नेटवर्क की गति से हराया है, जब मैं एमएसडीएन पर लिंक ढूंढने की कोशिश कर रहा हूं तो मेरा ब्राउज़र लटकता है :( –

+1

आप ऊपर दिए गए मेरे संपादित उत्तर में दिखाए गए 'वेब ब्राउजर' पर 'पूर्वावलोकनकेडाउन' पर कब्जा कर सकते हैं। –

2

आप ProcessCmdKey विधि रद्द कर सकते थे कर सकते हैं:

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

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