Webbrowser Control

  • VB.NET
  • .NET 4.0

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von drschef.

    Webbrowser Control

    Ich habe unter Windows 10 und VB 2010 ein Fenster mit einem angedockten Webbrowser-Control (siehe Anhang) entfworfen. Diese wird mit

    VB.NET-Quellcode

    1. WebBrowser1.Navigate(Datei)


    beschickt, wobei die Datei in diesem Fall eine PDF-Datei ist. Da es mir nur um eine schlichte Anzeige geht, stört das Kontextmenü, bzw. ich würde es gern verändern. Nun gibt es im Web eine Menge Beiträge, die dazu Empfehlungen geben. Meist in Verbindung mit den Eigenschaften

    WebBrowser1.IsWebBrowserContextMenuEnabled = False
    Webbrowser1.contextmenustrip = ContextMenuStrip1
    WebBrowser1.ContextMenu = Nothing

    Hat aber alles nichts bewirkt. Auch nicht, wenn die Eigenschaften bereits in der Beschreibung des Steuerelements vorgetragen werden.
    Vermutlich hängt dieses Kontextmenü mit dem Dateityp PDF zusammen. Was ist da noch zu tun?
    Bilder
    • FIV.jpg

      131,97 kB, 801×627, 81 mal angesehen
    Ich kann es leider nicht testen.. dennoch was passiert wenn du die .Enabled-Eigenschaft auf false setzt?
    Dazu ein kleines CustomControl:

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Public Class AdvWebbrowser : Inherits WebBrowser
    3. Private _Enabled As Boolean
    4. <Browsable(True)>
    5. <EditorBrowsable(EditorBrowsableState.Always)>
    6. Public Overloads Property Enabled As Boolean
    7. Get
    8. Return _Enabled
    9. End Get
    10. Set(value As Boolean)
    11. _Enabled = value
    12. End Set
    13. End Property
    14. End Class
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    So einfach scheint es nicht zu sein. Ich habe neben Gathers Vorschlag auch versucht, das MouseClick-Ereignis zu überschreiben. Aber selbst darauf reagiert das Ganze nicht. Das liegt daran, dass man sich eingabetechnisch im PDF.js Viewer (so wird's mir zumindest bei Firefox angezeigt) befindet, wodurch die Manipulationen im WebBrowser-CE ohne Wirkung sind. Das heißt, man müsste wohl den Adobe Reader (oder welches PDF-Anzeigetool auch immer auf dem jeweiligen PC verwendet wird! => es wird kompliziert) manipulieren, um das gewünschte Ergebnis zu erzielen.

    btw: @drschef: Die Schriftfarbe Rot ist nur für Moderatoren.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Könnte man nicht:
    A: eine Libary verwendet welche PDF's anzeigt.
    B: (eine unschöne Methode) einen Screenshot vom Webbrowser machen und diesen auf ein anderes Control zeichnen.
    Somit hätte man den gewünschten Anzeigeeffekt.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Danke erst mal für die Beiträge. Ich finde es unschön wenn in der Eigenschaftenauswahl Optionen angeboten werden, die total tot sind.

    Mir ist so, als hätte ich auch schon mit Maus-events experimentiert und die waren auch tot. Das Abfangen des Rechtscursors probiere ich dann noch mal aus, habe aber keine großen Hoffnungen. Ich lasse wieder von mir hören.

    Wenn nichts hilft, dann geht es an die Alternativen.
    @drschef Ich dachte es wäre einfach mit dem PDFViewer lösbar aber auch bei dem bekomme ich das Contexmenu nicht ausgeschaltet. Selbst wenn ich ein neues leeres CM hinterlege wird das original übernommen.

    Vielleicht ist das mit dem "Zeichen" des PDF auf z.B. ein Panel doch die einfachere Lösung :)
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Sollte ziemlich simpel sein:

    Quellcode

    1. Private Function getBitmap(ByVal pCtrl As Control) As Drawing.Bitmap
    2. Dim myBmp As New Bitmap(pCtrl.Width, pCtrl.Height)
    3. Dim g As Graphics = Graphics.FromImage(myBmp)
    4. Dim pt As Point = pCtrl.Parent.PointToScreen(pCtrl.Location)
    5. g.CopyFromScreen(pt, Point.Empty, myBmp.Size)
    6. g.Dispose()
    7. Return myBmp
    8. End Function

    Damit machst du einen Screenshot von dem Webbrowser Control, sobald dieser die PDF geladen hat. Anschließend musst du nurnoch ein Panel erstellen es darüberhauen und das bitmap daraufzeichnen.

    (Vom Handy gesendet)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Weiß nicht, aber evtl. ließe sich das wie folgt lösen: Vielleicht kann man den Pfad zum PDF mit (sofern es entsprechende gibt) Startparametern an das BrowserControl übergeben...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo,

    danke für die Stellungnahmen von gather und mrMo.

    Die Reproduktion der Grafik in einem Panel könnte an mehrseitigen Dokumenten scheitern. ich probiere das aber als Nächstes aus. Die Parameterübergabe werde ich auch untersuchen, habe aber noch nichts darüber gelesen.