Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Webbrowser: Text vergrößern / verkleinern
Warappa
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

Webbrowser: Text vergrößern / verkleinern

beantworten | zitieren | melden

Hallo,

ich habe das Webbrowser-Steuerelement (2.0) in meine Form eingebaut. Nun habe ich 2 Buttons: 1er soll die Schrift (NUR die Schrift) kleiner und der andere größer machen.

Bin schon auf

webBrowser.Document.Body.Style = "zoom: 200%"
gestoßen, das verkleinert/vergrößert aber ALLES.

Dann hab ich es mit


HTMLDocument hDoc = (HTMLDocument)webBrowser1.Document.DomDocument;
IHTMLTxtRange textSelection = (IHTMLTxtRange)hDoc.selection.createRange();           
textSelection.expand("textedit");
textSelection.select();

hDoc.execCommand("FontSize", false, 7);

hDoc.selection.empty();
über die DOM des Webbrowsers und der Funktion ExecCommand versucht, das verkleinert/vergrößert zwar den Text, aber die relativen Unterschiede zwischen den Textblöcken werden durch ein und die selbe Schriftgröße ersetzt. (d.h. font1 12px, font2 20px -> BEIDE Größe 7)


Jetzt die eigentliche Frage:
Wie kann ich die Schrift kleiner/größer machen (wie im IE unter Ansicht->Schriftgrad)?

Danke schon mal fürs Durchlesen

Und danke im Voraus für die Antworten!

mfg
Warappa
Praxis schlägt immer die Theorie!
private Nachricht | Beiträge des Benutzers
Warappa
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

Hallo,

habs selbst rausgefunden:

Man braucht die Schnittstelle IWebbrowser2 aus der COM-Datei "ShDocVW.dll" (Microsoft Internet Controls) dann folgender Code:

object oOut=new Object();
object oIn=(int)fontSize; //1...4, NUR Int32!

((SHDocVw.IWebBrowser2)(webBrowser1.ActiveXInstance)).ExecWB(
SHDocVw.OLECMDID.OLECMDID_ZOOM,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
ref oIn,
ref oOut);

oIn: Int32 Zahl, Schriftgrad von 1 bis 4
oOut: Int32 Zahl, Schriftgrad nach ausführen der Funktion
Ich hoffe, dass das jemanden da draußen das lange Suchen erspart!

Mfg
Warappa
Praxis schlägt immer die Theorie!
private Nachricht | Beiträge des Benutzers
Simon Heinzmann
myCSharp.de - Member

Avatar #avatar-2571.jpg


Dabei seit:
Beiträge: 43
Herkunft: Bayern

beantworten | zitieren | melden

Hi,

erstmal DANKE an Warappa ich hatte genau das Problem, bin leider Anfänger und hab auf dem ersten Blick ned wirklich verstanden was du da machst, deshalb stelle ich hier für das Problem meinen Code rein und ne kleine Anleitung.

Hoffe das hilft irgendjemanden mal so wie mir.

Codeverbesserungsvorschläge sind natürlich herzlich Willkommen

Edit: Anmerkung es gibt fünf Schriftgrade von 0 - 4

Verweise -> Verweis hinzufügen
Com -> Microsoft Internet Controls "ShDocVW.dll"

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AxSHDocVw;

namespace WindowsFormsApplication1
{
     public partial class FormBrowser : Form
    {

        // Intialsierung des Zoomlevels auf Medium = 2
        int schriftgradlevel = 2;
                        
        public FormBrowser()
        {
            InitializeComponent();
        }
        
        private void buttonFontUp_Click(object sender, EventArgs e)
        {
            schriftgradlevel++;
            labelSchriftgrad.Text = "Schriftgrad: " + schriftgradlevel;
            if (schriftgradlevel < 5)
            {
                buttonFontDown.Enabled = true;
                object oOut = new Object();
                object oIn = (int)schriftgradlevel; //0...4, NUR Int32!
                ((SHDocVw.IWebBrowser2)(webBrowser.ActiveXInstance)).ExecWB (SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref oIn, ref oOut);
            }
            if (schriftgradlevel == 4)
                buttonFontUp.Enabled = false;
        }

        private void buttonFontDown_Click(object sender, EventArgs e)
        {

            schriftgradlevel--;
            labelSchriftgrad.Text = "Schriftgrad: " + schriftgradlevel;
            if (schriftgradlevel ≥ 0)
            {
                buttonFontUp.Enabled = true;
                object oOut = new Object();
                object oIn = (int)schriftgradlevel; //1...4, NUR Int32!
                ((SHDocVw.IWebBrowser2)(webBrowser.ActiveXInstance)).ExecWB (SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref oIn, ref oOut);
             }
            if (schriftgradlevel == 0)
                buttonFontDown.Enabled = false;
        }

        private void FormBrowser_Leave(object sender, FormClosingEventArgs e)
        {
            object oOut = new Object();
            object oIn = 2; //0...4, NUR Int32!
((SHDocVw.IWebBrowser2)(webBrowser.ActiveXInstance)).ExecWB (SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref oIn, ref oOut);
        }
    }
}
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Simon Heinzmann am .
private Nachricht | Beiträge des Benutzers