बदल गया है डिज़ाइन मोड में प्रवेश नहीं करता मैं एक निराशा होती समस्या है। यहाँ मैं क्या कर रहा का एक सरलीकृत संस्करण है:WPF WebBrowser नियंत्रण जब दस्तावेज़ संपत्ति
ग में एक UserControl # एक उपकरण पट्टी और एक एम्बेडेड WebBrowser वस्तु में शामिल है। टूलबार में "एडिट" बटन होता है, जिसे क्लिक करने पर डिज़ाइन मोड में वेबब्रोसर नियंत्रण सेट होता है। एक और बटन, "रद्द करें", डिज़ाइन मोड बंद कर देता है।
स्यूडोकोड (बहुत सरल):
public void SetDesignMode(bool dm) {
IHTMLDocument2 doc = webBrowser.Document as IHTMLDocument2;
if (dm) doc.designMode = "On";
else doc.designMode = "Off";
_designMode = dm;
ReloadDocument(); // setting designmode clears the document element, so it must be reloaded
}
public void OnLoadCompleted() {
IHTMLDocument2 doc = webBrowser.Document as IHTMLDocument2;
if (!_documentLoaded) {
if (_designMode) doc.designMode = "On";
else doc.designMode = "Off";
ReloadDocument();
_documentLoaded = true;
}
}
public void ReloadDocument() {
_documentLoaded = false;
// code that navigates to the document
}
समस्या: अगर मैं "संपादन" बटन पर प्रदर्शित वेब पृष्ठ पर क्लिक करें और फिर, WebBrowser नियंत्रण नहीं संपादन योग्य बन जाएगा । माउस पॉइंटर जब चित्र/लिंक पर होवर करते हैं तो वेब ब्राउज़र नेविगेशन माउस पॉइंटर्स दिखाते हैं, संपादन वाले नहीं। अगर मैं पाठ में क्लिक करता हूं, तो कैरेट प्रदर्शित नहीं होगा।
डिबगिंग से पता चलता है कि दस्तावेज़ पर डिज़ाइनमोड संपत्ति वास्तव में इस स्थिति में "चालू" पर सेट है, लेकिन नियंत्रण इस तरह व्यवहार कर रहा है जैसे कि यह "ऑफ" पर सेट हो।
अगर मैं "संपादन" बटन क्लिक करने से पहले वेब पेज में क्लिक नहीं कर , सब कुछ उम्मीद के रूप में काम करता है।
विस्तार: अगर मैं "रद्द करें" बटन पर क्लिक करें नियंत्रण डिजाइन मोड में है, मैं, इसी (गलत) व्यवहार मिलता है दस्तावेज़ में क्लिक किया गया है
, बस पर क्लिक "। संपादित करें ", तो" रद्द करें ", तो" संपादित करें "आदि कभी क्लिक करने में दस्तावेज़ ठीक काम करता है बिना (माउसओवर परीक्षण उचित माउस पॉइंटर को पता चलता है, और मैं डिज़ाइन मोड पर निर्भर करता है अगर मैं में एक लिंक पर क्लिक करें लिंक नेविगेशन या संपादन मिल प्रदर्शित दस्तावेज़)।
मुझे यकीन है कि एक और नियंत्रण ध्यान केंद्रित करने से पहले मैं designMode संपत्ति बदल जाता है बनाने के लिए विभिन्न तकनीकों की कोशिश की है, लेकिन यह कोई फर्क नहीं पड़ता। मैंने एमएसडीएन और ज्ञात इंटरनेट के आधे की खोज की है और इस तरह की समस्या का कोई उल्लेख नहीं मिला है। डिजाइन को फ़्लिप करना इस तरह की संपत्ति संपत्ति काफी अनौपचारिक प्रतीत होती है। जानकारी के
एक और tidbit: मैं एक सिंक usercontrol द्वारा कार्यान्वित के साथ दस्तावेज़ सलाह देने दस्तावेज़ घटनाओं सेट कर रहा हूं। मुझे संदेह है कि इस समस्या पर कोई असर होना चाहिए, लेकिन मैंने इसे पूरा होने के लिए यहां शामिल किया है। अद्यतन: इसे अक्षम करने से समस्या के बारे में कुछ भी नहीं बदला जाता है।
किसी को भी इस समस्या को पहचान करता है?
अद्यतन: मैं SetDesignMode में वेब ब्राउज़र नियंत्रण फिर से बनाने के द्वारा समस्या को हल काम किया है()। यह एक बदसूरत समाधान है, लेकिन यह काम करता है और वास्तव में ठीक दिखता है। हालांकि, मुझे इस समस्या पर किसी भी प्रतिक्रिया में बहुत दिलचस्पी है। मेरा मानना है कि यह एमएसएचटीएमएल में एक बग है।
दोनों विधियां काम करती हैं, धन्यवाद। तथापि; पहली विधि किसी भी तरह से मेरी "पूर्ववत करें" (Ctrl-Z/ExecCommand ("Undo" ...)) को क्रिया से बाहर रखती है। दूसरी विधि पर, परिवर्तन किसी कारण से WebBrowser.DocumentText पर प्रतिबिंबित नहीं होते हैं। मैं webBrowser.Dcoument.Body.InnerHtml के माध्यम से इसे निकालने में सक्षम था हालांकि समस्या को हल किया। – Natan