Laden...

Webbrowser: Text vergrößern / verkleinern

Erstellt von Warappa vor 17 Jahren Letzter Beitrag vor 15 Jahren 5.538 Views
W
Warappa Themenstarter:in
59 Beiträge seit 2006
vor 17 Jahren
Webbrowser: Text vergrößern / verkleinern

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!

W
Warappa Themenstarter:in
59 Beiträge seit 2006
vor 17 Jahren

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!

43 Beiträge seit 2008
vor 15 Jahren

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);
        }
    }
}