मेरे पास कुछ HTML प्रदर्शित करने वाला वेबब्रोसर नियंत्रण है।
मैं चाहता हूं कि उपयोगकर्ता पूरे दस्तावेज़ की प्रतिलिपि बनाने में सक्षम हो, लेकिन कुछ भी नहीं।वेबब्रोसर कीबोर्ड शॉर्टकट
मैं false
को IsWebBrowserContextMenuEnabled
और WebBrowserShortcutsEnabled
गुण सेट है, और मैं KeyUp
संभालने के लिए और जब उपयोगकर्ता प्रेस Ctrl + C कुछ कोड चलाना चाहते हैं।
मैं यह कैसे कर सकता हूं?
वेबब्रोसर नियंत्रण कुंजीपटल घटनाओं का समर्थन नहीं करता है।
मैंने फॉर्म KeyUp
ईवेंट KeyPreview
के साथ ईवेंट का उपयोग करने का प्रयास किया, लेकिन यह बिल्कुल भी नहीं चला।
EDIT: यहां मेरा समाधान है, जेर्ब के जवाब से प्रेरित है।
class CopyableWebBrowser : WebBrowser {
public override bool PreProcessMessage(ref Message msg) {
if (msg.Msg == 0x101 //WM_KEYUP
&& msg.WParam.ToInt32() == (int)Keys.C && ModifierKeys == Keys.Control) {
DoCopy();
return true;
}
return base.PreProcessMessage(ref msg);
}
void DoCopy() {
Document.ExecCommand("SelectAll", false, null);
Document.ExecCommand("Copy", false, null);
Document.ExecCommand("Unselect", false, null);
}
}
यह लगभग काम करता है, लेकिन मुझे CTRL + C के लिए कोई संदेश नहीं मिल रहा है। अगर मैं सी दबाता हूं, तो 'कीडेटा'' सी' है, लेकिन अगर मैं किसी अन्य कुंजी के साथ या बिना नियंत्रण दबाता हूं, तो 'कीडेटा'' एलबटन है। ShiftKey | नियंत्रण ', और यह निर्धारित करने का कोई तरीका नहीं है कि कौन सी अन्य कुंजी, यदि कोई हो, दबाया गया था। – SLaks
आखिरी मामला कथन "केस कीज। कंट्रोल | कीज।" वही कर रहा है जो आप करने की कोशिश कर रहे हैं। द एकाधिक चाबियाँ पकड़ने के लिए प्रयोग किया जाता है। तो "केस कुंजी। नियंत्रण | Keys.C:" चाल करना चाहिए। – Jerb