NGF wrote: |
Αυτο ειναι το γραψε-σβησε του κωδικα. Το προβλημα που πεταει τωρα ειναι :
Unable to cast COM object of type 'MOZILLACONTROLLib.MozillaBrowserClass' to class type 'System.Windows.Forms.Control'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.
Αυτο το πεταει στη γραμμη : TabPage.Controls.Add(M) |
|
Το πρόβλημα είναι ότι το control του web browser είναι COM και όχι .NET (το ξέχασα στην αρχή), οπότε δεν μπορεί να προστεθεί ως έχει στην Controls collection, μια που δεν κληρονομεί το System.Windows.Forms.Control.
Για να γίνει κάτι τέτοιο υπάρχει η AxHost class, η οποία λειτουργεί ως wrapper του COM control και η οποία κληρονομεί από το Control, οπότε μπορεί να χρησιμοποιηθεί αναλόγως. Σε αυτό το άρθρο περιγράφεται πως μπορείς να δημιουργήσεις δυναμικά instances ενός COM control: http://www.codeproject.com/dotnet/AxForms.asp. Στο τέλος του άρθρου τρέχει τον sample κώδικα που έχει γράψει ανοίγονταις ένα excel sheet χρησιμοποιώντας το "OWC.Spreadsheet.9" σαν classid. Εσύ θα πρέπει να βρεις το classid που αντιστοιχεί στον web browser του firefox.
Για προχωρημένους: Η AxHost έχει protected constructor, για αυτό και στο παραπάνω παράδειγμα δημιουργεί μια άλλη κλάση που την κληρονομεί, έτσι ώστε να μπορεί να την αρχικοποιήσει.
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.