.net - Pass info back to parent into its WebBrowser Control -


विजुअल स्टूडियो 2010, विजुअल बेसिक .नेट


फिर से संपादित करें मैंने निर्धारित किया है कि मैं क्या करने की कोशिश कर रहा हूं, ऐसा नहीं किया जा सकता।


मेरे पास एक वेबब्रेसर नियंत्रण wbContent के साथ एक फार्म frmContent है। यदि आप wbContent में एक छवि लिंक पर क्लिक करते हैं, तो यह एक नया फॉर्म (frmImages) खोलता है और छवि को वेबब्रोजर wbImages में लोड करता है मैं इसके लिए एक वेबब्राउजर नियंत्रण का उपयोग करता हूं क्योंकि मैं html में लिखे गए टेबल को खोलने के लिए एक ही विंडो का उपयोग करता हूं।

वैसे भी, जब उपयोगकर्ता wbContent में एक तालिका लिंक पर क्लिक करता है, तो यह frmImages खोलता है और wbImages < / code>।

मैंने wbContent में जैसे wbImages में एक माउस डाउन ईवेंट श्रोता जोड़ा है जब उपयोगकर्ता WBImages के अंदर किसी तालिका में एक लिंक पर क्लिक करता है, तो यह माना जाता है कि इस लिंक को उसके माता पिता के रूप में, frmContent में खोलें।

मैंने कोशिश की है wbImages.Stop () को रोकने के लिए wbImages से नेविगेटिंग, लेकिन वह काम नहीं करता है।

मैं frmContent पर फ़ोकस सेट करने की कोशिश करता हूं, और उसके बाद URL को मूल वेबब्रोज, wbContent में लोड कर रहा है और वह काम नहीं करता है। तब मैं काम करने के लिए केवल एक चीज कर सकता हूं, इससे पहले कि मैं URL को मूल विंडो में भेजने से पहले एक संदेश बॉक्स को जोड़ना है।

यह कोड नीचे काम करता है, लेकिन अगर मैं संदेश बॉक्स को निकालता हूं, तो वह URL को wbImages में लोड करता है।

 <कोड> सार्वजनिक उप wpMouseDown (ByVal इस वस्तु के रूप में, ByVal ई HtmlElementEventArgs के रूप में) यदि e.MouseButtonsPressed = Windows.Forms.MouseButtons.Left फिर मंद bookmarkElement = wbImages.Document.GetElementFromPoint (e.ClientMousePosition) यदि बुकमार्करएलिमेंट.गेटअेट्रिब्यूट ("href")। ToString () & lt; & gt; "" तो फिर testUrl = bookmarkElement.GetAttribute ( "href")। ToString () MessageBox.Show (testUrl) frmContent.Focus () frmContent.wbContent.Navigate (नया उरी (testUrl)) अंत अगर अंत तो End Sub   

संपादित करें

अगर मैं frmContent.wbContent.Navigate (नई URI (testUrl)) निकालता हूं, wbImages अभी भी नेविगेट करते हैं। मुझे गलत तरीके से एक रिटर्नवॉल लागू किया होगा, या मेरे ईवेंट हैंडलर गलत है और। रोकें () या तो काम नहीं करता है यहां दिए गए सुझावों से कोई भी बदलाव करने से पहले यहां पूरी ईवेंट हैंडलर कोड है I

  निजी उप frmImages_Load (इस System.Object के रूप में, ई System.EventArgs के रूप में) हैंडल MyBase.Load AddHandler wbImages.Document.MouseDown, AddressOf wpMouseDownEvent End Sub निजी उप wpMouseDownEvent (ByVal इस वस्तु के रूप में, Byval as System.Windows.Forms.HtmlElementEventArgs) Dim event_html नई HtmlElementEventHandler के रूप में (पताऑफ़ wpMouseDown) event_html.Invoke (प्रेषक, ई) अंत उप लोक उप wpMouseDown (ऑब्जेक्ट के रूप में ByVal प्रेषक, ByVal ई के रूप में HTMLElementEventArgs) यदि e.MouseButtonsPressed = Windows .Forms.MouseButtons.Left फिर मंद bookmarkElement = wbImages.Document.GetElementFromPoint (e.ClientMousePosition) bookmarkElement.GetAttribute ( "href") यदि toString ()। & lt; & gt; "" तो फिर testUrl = bookmarkElement.GetAttribute ( "href")। ToString () 'की आवश्यकता है testUrl wbContent समाप्ति के लिए नेविगेशन को पास करने की तो अंत तो End Sub    

< डिवेल क्लास = "पोस्ट-टेक्स्ट" आइटमप्रॉप = "टेक्स्ट">

आपको डिफ़ॉल्ट कोड को रोकने के लिए ईवेंट का False सेट करना होगा, जैसे आप false < / code> डिफ़ॉल्ट कार्य को रोकने के लिए जावास्क्रिप्ट में एक onclick हैंडलर से।


यह हो सकता है कि ईवेंट हैंडलर एक अलग थ्रेड पर चलता है या यह कि इस फैशन में इस्तेमाल होने पर घटनाएं केवल काम नहीं करती हैं मुझे संदेह है कि MessageBox इसे काम करता है क्योंकि यह एक इवेंट लूप चलाता है जो कुछ संदेश को संसाधित करता है जिसे किसी अन्य नेविगेटन से पहले संसाधित करने की आवश्यकता होती है। इन स्थितियों में से कोई भी संभवत: BeginInvoke के साथ नेविगेशन को परिभाषित करके हल किया जा सकता है। मैं एक VB.NET प्रोग्रामर नहीं कर रहा हूँ, लेकिन कुछ इस तरह, मुझे लगता है:

  frmContent.BeginInvoke (फंक्शन () frmContent.Activate () frmContent.wbContent.Navigate (नया उरी (testUrl )) समाप्ति समारोह)    

Comments

Popular posts from this blog

python - Writing Greek in matplotlib labels, titles -

c# - LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String, System.StringComparison)' method -

c# - Call function from DLL -