none
Zweite Fortsetzung RichTextBox RRS feed

  • Frage

  • Hallo

    Es geht um dasselbe Projekt wie in den vergangenen Fragen.

    In ein Panel wurde eingefügt:

    ComboBox                  -  zeigt die installierten Schriftarten an

    Buttons(size)              -  Schriftgröße ändern  (Selection Font)

    Buttons(style)              -  Schriftstil ändern (Bold, Italic….)

    Zwei Buttons(style) sind  mit    Bold/Underline   und mit   Italic/Underline belegt.

    private void button5_Click(object sender, EventArgs e)

            {

                richTextBox1.SelectionFont = new Font(comboBox1.Text, richTextBox1.Font.Size, FontStyle.Bold | FontStyle.Underline);

            }

       }

    Das Problem ist, wenn ich mit diesen Buttons die Schriftgröße ändern will, wird nur  Underline  alleine angezeigt.

                if (richTextBox1 .SelectionFont .Bold && richTextBox1 .SelectionFont .Underline )

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11,( FontStyle.Bold)|FontStyle.Underline);

                }

    Was mache ich hier falsch?

    Sonntag, 29. April 2012 19:11

Antworten

  • Hallo Christina,

    ich hatte bisher keine Zeit Dein Programm anzuschauen, deswegen die späte Rückmeldung.

    Zu den Schriftarten:
    Die sind nicht kaputt. Es ist vielmehr so, dass nicht jede Schriftart alle Stile unterstützt.
    So wird Heavy für eine sehr prägnante Schriftart stehen, die durch eine zusätzliche fette Darstellung unleserlich
    (oder zumindest sehr unschön würde). Und dies deswegen nicht unterstützt.
    Ähnliches gilt für Schmuckschriften - so ist Aharoni nur mit der Auszeichung fett verfügbar.

    Im Programm kann man das über die FontFamily.IsStyleAvailable Methode prüfen.

    Wenn Du den Schriftauswahl-Dialog mit Deiner ComboBox-Auswahl vergleichst, so wirst
    Du feststellen, dass in der Schriftauswahl weniger Schriftarten auftauchen (so fehlt z. B. Aharoni).

    Um nur die Schriftarten anzuzeigen, die mindesten als "normaler" (regular) Schnitt verfügbar sind,
    müsstest Du die Auswahl der ComboBox begrenzen, was z. B. über Filter ginge:

            private void VS_Editor1_Load(object sender, EventArgs e)
            {
                FontFamily[] Schriftart = (from f in  FontFamily.Families
                                          where f.IsStyleAvailable(FontStyle.Regular)
                                          select f).ToArray();
    
                comboBox1.DataSource = Schriftart;
                // ... weiter wie bisher
            }
    

    Als nächsten Schritt solltest Du Code zu reduzieren, da sehr viel kopiert wurde.
    So kannst Du z. B. die Änderungen für die Schriftgröße mit einer einzigen Ereignis-Behandlung erledigen.
    Ein (vereinfachter) Vorschlag wäre z. B.:

            private void fontSizeButton_Click(object sender, EventArgs e)
            {
                var fontSizeButton = sender as Button;
                try
                {
                    // FontSize über den Text (alternativ über Tag-Eigenschaft)
                    float fontSize = Single.Parse(fontSizeButton.Text);
                    FontFamily family = new FontFamily(this.comboBox1.Text);
                    FontStyle style = this.richTextBox1.SelectionFont.Style;
    
                    if (family.IsStyleAvailable(style))
                    {
                        Font newFont = new Font(family, fontSize, style, GraphicsUnit.Pixel);
                        this.richTextBox1.SelectionFont = newFont;
                        this.fontnameTextBox.Text = richTextBox1.SelectionFont.Name;
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message, "fontSizeButton_Click");
                }
            }
    

    dabei werte ich den Text des Buttons aus um die Schriftgröße zu bestimmen -
    alternativ könnte man auch die Tag-Eigenschaft des Buttons dafür verwenden.
    Diese Routine kannst Du nun allen Schriftgrößen-Schaltflächen dem Click-Ereignis zuweisen
    (und die bisherigen Routinen entsorgen).

    Ein entsprechendes Vorgehen bietet sich auch für die Schriftstile und anderes mehr an.

    Gruß Elmar

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:25
    Samstag, 5. Mai 2012 07:37
  • Hallo,

    die andere Größe ergibt sich daraus, das ich (unbdeachterweise) GraphicsUnit.Pixel im Code verwendet habe,
    daraus ergibt sich eine andere Größe als beim Standard GraphicsUnit.Point - das Verhältnis ist 72 (pt) / 96 (px) = 0,75.

    Das einfachste wäre hier, wieder Point zu verwenden, denn Feinheiten
    interessieren Anwender selten, nur wie "groß" das Schriftbild aussieht.

    Weitere Fragen kannst Du gerne stellen.
    Bitte in einem neuen Thread, da dieser langsam unübersichtlich wird.

    Gruß Elmar

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:19
    Sonntag, 6. Mai 2012 17:55
  • Hallo ch.f.1,

    Vielen Dank für Deine Frage und Beitrag!

    Schau Dir mal auch folgenden Links an. Vielleicht können sie Dir weiterhelfen.

    font style is bold+underline

    Difference between | and || or & and && for comparison [closed]

    C# Operators

    Ist button5 (man sieht Du hast ein button5_Click) von den Buttons(size) oder von den Buttons(style)?

    Kannst Du Dein Problem deutlicher und völliger beschreiben?

    Relevanter Code zu posten (poste mal den ganzen Code) wäre auch nicht schlecht oder eine .zip Datei mit den Code (falls der Code zu groß ist) kann man ihm Public Ordner von SkyDrive laden und den link hier Posten.  (Wie nutze ich den SkyDrive?)

    Jetzt kannst Du auch Bilder in die Beiträge einfügen: [Info] Neue Grafikfunktion für MSDN Forenbeiträge | Neue Forum Feature: Bilder in einem Beitrag einfügen

    Viele Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:22
    Montag, 30. April 2012 08:47
  • Hallo,

    bei dem Umfang des Codes wäre es besser Du stellst das Projekt zum Download bereit, z. B. über Skydrive

    Förderlich das langfristige Verständnis ist es, Steuerelemente einen Namen zu geben, der ihren Verwendungszweck beschreibt
    (z. B. fontComboBox oder fontSizeButton)
    Das kann man im Nachhinein relativ einfach über Umbenennen (F2 Taste) vornehmen.

    Gruß Elmar

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:22
    Dienstag, 1. Mai 2012 08:29
  • Hallo Christina Fröhlich,

    Hilf mal das Problem zu reproduzieren. Ich habe folgendes gemacht:

    1) Das Programm im Debugging-Mode von Visual Studio 2010 gestartet.

    2) Eine RTF-Datei geladen

    3) Auf Extras à Schriftauswahl Ein/Aus geklickt

    Was soll man weiter machen?

    Danke und Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:20
    Mittwoch, 2. Mai 2012 09:48

Alle Antworten

  • Hallo ch.f.1,

    Vielen Dank für Deine Frage und Beitrag!

    Schau Dir mal auch folgenden Links an. Vielleicht können sie Dir weiterhelfen.

    font style is bold+underline

    Difference between | and || or & and && for comparison [closed]

    C# Operators

    Ist button5 (man sieht Du hast ein button5_Click) von den Buttons(size) oder von den Buttons(style)?

    Kannst Du Dein Problem deutlicher und völliger beschreiben?

    Relevanter Code zu posten (poste mal den ganzen Code) wäre auch nicht schlecht oder eine .zip Datei mit den Code (falls der Code zu groß ist) kann man ihm Public Ordner von SkyDrive laden und den link hier Posten.  (Wie nutze ich den SkyDrive?)

    Jetzt kannst Du auch Bilder in die Beiträge einfügen: [Info] Neue Grafikfunktion für MSDN Forenbeiträge | Neue Forum Feature: Bilder in einem Beitrag einfügen

    Viele Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:22
    Montag, 30. April 2012 08:47
  • Hallo Robert

    Danke für die Antwort und für die Links. Kann sie leider erst am  Abend lesen.

    Button5 ist Button(style).Dummerweise habe ich einige Elemente(Buttons, Labels…) nicht umbenannt.

    >Relevanter Code zu posten (poste mal den ganzen Code) wäre auch nicht schlecht….

    Der Code ist ungefähr 3000 Zeilen lang. Soll ich trotzdem?

    Die grafische Ansicht ist nicht sehr ansprechend, wird noch überarbeitet.

    Es sind vier Panel(Visible true/false)

    Erstes Panel (von links nach rechts):

           Label (Color):  MouseDown  zeigt ARGB Anteile und Name der Farbe.

                                     MouseClick  =  SelectedColor/SelectedBackColor.  (CheckBox)

    Zweites Panel:

            ComboBox1 (Installierte Schriftarten)

            ComboBox2 (noch ohne Funktion)

            Buttons (FontSize)

            Buttons (FontStyle)

    Drittes Panel:

            TextBox, Button, Label

     Viertes Panel:

           Drei TextBoxen, Fünf Label

                                           MouseClick:     + - * /     einfache Rechnung ausführen.

                                           DoubleClick:     TextBox.Text =  RichTextBox.Text

    Unter dem dritten Panel sind noch Buttons mit Standartfunktionen geplant.

    Das Problem ist folgendes: Zweites Panel – Button(Bold/Underline) und Button(Italic/Underline)

    Diese Funktionen werden bei Größenänderung nicht zusammen angezeigt.

    Melde mich am Abend wieder.

    Mit freundlichen Grüßen

    Chris

           

    Montag, 30. April 2012 10:20
  • Hallo,

    bei dem Umfang des Codes wäre es besser Du stellst das Projekt zum Download bereit, z. B. über Skydrive

    Förderlich das langfristige Verständnis ist es, Steuerelemente einen Namen zu geben, der ihren Verwendungszweck beschreibt
    (z. B. fontComboBox oder fontSizeButton)
    Das kann man im Nachhinein relativ einfach über Umbenennen (F2 Taste) vornehmen.

    Gruß Elmar

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:22
    Dienstag, 1. Mai 2012 08:29
  • Hallo Robert

    Leider konnte ich mich nicht früher melden, es tut mir leid.

    Mit  >  C# Operators  <  habe  ich einige Wissenslücken schließen können.  Danke J

    Das Problem konnte ich noch nicht lösen.    Bitte Hilfe….

    Beispiel mit Schriftgröße 11:

      private void fontSize11Button_Click(object sender, EventArgs e)

            {

                if (richTextBox1.SelectionFont.Underline)

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11, FontStyle.Underline);

                }

                if (richTextBox1.SelectionFont.Bold)

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11, FontStyle.Bold);

                }

                if (richTextBox1.SelectionFont.Italic)

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11, FontStyle.Italic);

                }

                if (richTextBox1.SelectionFont.Strikeout)

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11, FontStyle.Strikeout);

                }

                if (richTextBox1.SelectionFont.Strikeout == false && richTextBox1.SelectionFont.Italic == false && richTextBox1.SelectionFont.Bold == false && richTextBox1.SelectionFont.Underline == false)

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11, FontStyle.Regular);

                }

                if (richTextBox1.SelectionFont.Bold && richTextBox1.SelectionFont.Underline == true && richTextBox1.SelectionFont.Italic == false)

                {

                    richTextBox1.SelectionFont = new System.Drawing.Font(comboBox1.Text, 11, FontStyle.Bold & FontStyle.Underline);

                }

                // if (richTextBox1.SelectionFont.Underline  == true && richTextBox1.SelectionFont.Italic  == true)

                if (richTextBox1.SelectionFont.Italic && richTextBox1.SelectionFont.Underline)

                {

                    richTextBox1.SelectionFont = new Font(comboBox1.Text, 11, FontStyle.Italic & FontStyle.Underline);

                }

                fontnameTextBox.Text = richTextBox1.SelectionFont.Name.ToString();

            }

            

    Der Code ist bis jetzt fast sechzig Wordseiten lang. Ich weiß nicht ob sich das jemand antun möchte…. 

    Wenn doch, bitte um Nachsicht für teilweises Chaos im Code, das wird sich noch ändern.

    https://skydrive.live.com/#!/?cid=5E879F44EE9DDF78&id=5E879F44EE9DDF78%21121

    Ich hoffe, es ist der richtige Link mit dem Projekt.

    Noch eine Information zum Projekt:

    Ich habe Editor_19042012 auf einem anderen PC mit Visual Studio 2011 bearbeitet. Wenn das ein Problem ist wegen der unterschiedlichen Net.Framework Versionen, bitte schreiben.

    Ich werde dann das ursprüngliche VS 2010 Projekt schicken (Kann aber etwas dauern).

    Mit freundlichen Grüßen

    Chris



    • Bearbeitet ch.f.1 Dienstag, 1. Mai 2012 13:43
    Dienstag, 1. Mai 2012 11:58
  • Hallo Elmar

    Danke für die Antwort.

    > Förderlich das langfristige Verständnis ist es, Steuerelemente einen Namen zu geben….

    Ich war teilweise etwas zu nachlässig, aber das wird sich ändern. In meinen vorhergehenden Anfragen habe ich schon geschrieben, das ich noch nicht viel Erfahrung mit C# habe.  Aber mit jedem erfolgreichen Schritt wird man mehr davon gefangen und es entsteht Faszination und eine Art Zuneigung zu C#.

    Mir liegt sehr viel daran, dieses Projekt umfangreich, optisch ansprechend und gut funktionierend (Benutzerfreundlich) fertigstellen zu können, trotz meines  noch geringen Wissens. Ich bin für jeden Rat dankbar, der mich zu diesem Ziel näherbringt.

    Zum Link habe ich schon an Robert Breitenhofer geschrieben, das ich Zweifel habe, ob es nicht Probleme gibt, weil dieses Projekt mit VS2010 und VS2011 bearbeitet wurde.

    https://skydrive.live.com/#!/?cid=5E879F44EE9DDF78&id=5E879F44EE9DDF78%21121

    Mit Freundlichen Grüßen

    Chris

        


    • Bearbeitet ch.f.1 Dienstag, 1. Mai 2012 13:53
    Dienstag, 1. Mai 2012 12:01
  • Hallo Elmar

    Falsche Dateien geschickt,wurde korrigiert.

    Ist mir etwas peinlich.

    Viele Grüße

    Chris

    Dienstag, 1. Mai 2012 13:08
  • Hallo Robert

    Es ist mir peinlich, aber ich habe die falschen Dateien hochgeladen.

    Habe es jetzt korrigiert.

    Viele Grüße

    Chis

    Dienstag, 1. Mai 2012 13:10
  • Hallo Robert

    Ich habe den Code in neue Buttons geschrieben und über die anderen gelegt(Finde ich nicht so optimal).Vielleicht gibt es bessere Lösungen?

    Aber es funktioniert nun.

    private void fontSizeButton_9_Click(object sender, EventArgs e)

            {

                if (richTextBox1.SelectionFont.Bold && richTextBox1.SelectionFont.Underline)

                {

                    richTextBox1.SelectionFont = new Font(comboBox1.Text, 9, FontStyle.Bold | FontStyle.Underline);

                }

                if (richTextBox1.SelectionFont.Italic && richTextBox1.SelectionFont.Underline)

                {

                    richTextBox1.SelectionFont = new Font(comboBox1.Text, 9, FontStyle.Italic | FontStyle.Underline);

                }

            }

    Beim Hochladen auf SkyDrive gab es zuerst eine Panne (falsche Dateien).

    Ist der Link in Ordnung?

    Mit freundlichen Grüßen

    Chris

    Mittwoch, 2. Mai 2012 01:34
  • Hallo Elmar

    Wahrscheinlich habe ich mir das Vorhaben FontSize.Bold und FontSize.Underline gleichzeitig anzuzeigen selbst versperrt. Ich denke durch den Code von FontSize.Regular.

    Ich habe nun noch einmal vierzehn Buttons (Visible true/false) über die bereits vorhandenen fontSizeButtons gelegt und den Code eingetragen. Es hat funktioniert, aber vielleicht gibt es doch noch bessere Lösungsmöglichkeiten.

    private void fontSizeButton_9_Click(object sender, EventArgs e)

            {

                if (richTextBox1.SelectionFont.Bold && richTextBox1.SelectionFont.Underline)

                {

                    richTextBox1.SelectionFont = new Font(comboBox1.Text, 9, FontStyle.Bold | FontStyle.Underline);

                }

                if (richTextBox1.SelectionFont.Italic && richTextBox1.SelectionFont.Underline)

                {

                    richTextBox1.SelectionFont = new Font(comboBox1.Text, 9, FontStyle.Italic | FontStyle.Underline);

                }

            }

     

    Beim Hochladen des Projekts habe ich zuerst einen Fehler gemacht. Ist es nun in Ordnung?

    Hat der Link funktioniert?

    Mit freundlichen Grüßen

    Chris

    Mittwoch, 2. Mai 2012 01:36
  • Hallo Chris,

    ich konnte auf die Dateien bei Skydrive nicht zugreifen.
    Hast Du den Zugriff auf öffentlich geändert? Denn ansonsten außer Dir niemand anderes darauf zugreifen.
    Siehe dazu Wie nutze ich den Skydrive?

    Gruß Elmar

    Mittwoch, 2. Mai 2012 08:03
  • Hallo Robert

    Es ist mir peinlich, aber ich habe die falschen Dateien hochgeladen.

    Habe es jetzt korrigiert.

    Hallo Christina Fröhlich,

    Ich kann es auch Bestätigen das man die Dateien nicht herunterladen kann, weil keine Elemente freigegeben wurden. Versuch es mal nochmals mit dem Link von Elmar der Dir zeigt wie man SkyDrive benutzt.

    Danke und Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 2. Mai 2012 08:19
  • Hallo Christina Fröhlich,

    Hilf mal das Problem zu reproduzieren. Ich habe folgendes gemacht:

    1) Das Programm im Debugging-Mode von Visual Studio 2010 gestartet.

    2) Eine RTF-Datei geladen

    3) Auf Extras à Schriftauswahl Ein/Aus geklickt

    Was soll man weiter machen?

    Danke und Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:20
    Mittwoch, 2. Mai 2012 09:48
  • Hallo Robert

    Ich habe Deine Nachricht schon zu Mittag gelesen, musste aber wieder zur Arbeit….

    Habe etwas Text  kopiert, eine Schriftart (in der ComboBox) ausgewählt; ein Wort oder eine Wortgruppe markiert, mit Mouse Click auf   F,K,U, N, F  oder K    den Schriftstil geändert ( Standartgröße – bei mir sehr klein ) und danach mit Mouse Click auf die Zahlenbuttons  die Schriftgröße.  Wenn kein Wort ausgewählt ist, ändern sich die neu geschriebenen Zeichen (beliebige Cursorposition).

    Erste Zeile      Arial    F,K, U, N, F,   

    Zweite Zeile   Größe 10  14  17  19

    Dritte Zeile     Verschiedene Schriften

    Bei manchen Schriftarten passiert leider:

    Die Farbentabelle funktioniert ähnlich (aber ohne Fehlermeldung):

    Ist das Programm brauchbar?  Lohnt es sich, weiterzumachen?

    Viele Grüße

    Chris

    Mittwoch, 2. Mai 2012 20:26
  • Hallo Robert

    Habe an mehreren Stellen nochmal   try/catch  einfügen müssen .Es wäre besser gewesen, wenn ich es vor dem Hochladen genauer getestet hätte  (fontSizeButtons  8  bis  21)

    Bitte um Entschuldigung

    Kann ich trotzdem auf weitere Hilfe hoffen?

    Gleiche Nachricht auch an Elmar Boye.

    Viele Grüße

    Chris

    Donnerstag, 3. Mai 2012 14:33
  • Hallo Elmar

    Habe an mehreren Stellen nochmal   try/catch  einfügen müssen .Es wäre besser gewesen, wenn ich es vor dem Hochladen genauer getestet hätte  (fontSizeButtons  8  bis  21)

    Bitte um Entschuldigung

    Kann ich trotzdem auf weitere Hilfe hoffen?

    Gleiche Nachricht auch an Robert Breitenhofer

    Viele Grüße

    Chris

    Donnerstag, 3. Mai 2012 14:36
  • Hallo Christina Fröhlich,

    Wegen der Fehlermeldung mit der Schriftart, prüfe mal ob die Schriftart "Xpress Heavy SF" bei Dir in C:\Windows\Fonts (Ordner auf Windows 7 Betriebssystem) existiert.

    Entsprechend der Information, die Du zur Verfügung gestellt hast, ist es wahrscheinlich, dass die Schriftart "Xpress Heavy SF" auf Deinem Clientcomputer beschädigt oder geändert wurde, und ihre Schriftstyle "Regular" fehlt. Da diese Situation nicht von den Standardmechanismus von Windows über Schriftarten ersetzen werden kann, empfehle ich, dass Du die Schriftart "Xpress Heavy SF" auf dem problematischen Computer installierst, und überprüfst, ob das Problem verschwunden ist.

    PS: Du brauchst nicht alle Beiträge zweimal schreiben (an Elmar und an mich). Du kannst einfach einen Beitrag schreiben mit: „Hallo Elmar, Robert …“

    Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 4. Mai 2012 07:34
  • Hallo Robert

    Es sind mehrere Schriftarten, die Probleme bereiten.  (“Accord Heavy SF” , “Agberg” , “  Aharoni” , “BolsterBold”, “Brush Script MT” , “Harlow Solid Italic” , “Locardo” , “Magneto” , “Monotype Corsiva”)

    Die Schriftart  “Aetna” wird  aufgrund  Deines Ratschlags ordnungsgemäß angezeigt.

    Google hat heute leider nicht geholfen, die Schriftart  “Xpress Heavy SF“  gibt es  mit  Bold/ Italic  aber nicht Regular.

    Weil ich mir nicht sicher bin, ob die genannten Schriftarten  - System Fonts sind oder von installierten Programmen stammen, habe ich noch nichts deinstalliert.   Wie soll ich weiter vorgehen?

    Mit freundlichen Grüßen

    Christina
    Freitag, 4. Mai 2012 22:10
  • Hallo Christina,

    ich hatte bisher keine Zeit Dein Programm anzuschauen, deswegen die späte Rückmeldung.

    Zu den Schriftarten:
    Die sind nicht kaputt. Es ist vielmehr so, dass nicht jede Schriftart alle Stile unterstützt.
    So wird Heavy für eine sehr prägnante Schriftart stehen, die durch eine zusätzliche fette Darstellung unleserlich
    (oder zumindest sehr unschön würde). Und dies deswegen nicht unterstützt.
    Ähnliches gilt für Schmuckschriften - so ist Aharoni nur mit der Auszeichung fett verfügbar.

    Im Programm kann man das über die FontFamily.IsStyleAvailable Methode prüfen.

    Wenn Du den Schriftauswahl-Dialog mit Deiner ComboBox-Auswahl vergleichst, so wirst
    Du feststellen, dass in der Schriftauswahl weniger Schriftarten auftauchen (so fehlt z. B. Aharoni).

    Um nur die Schriftarten anzuzeigen, die mindesten als "normaler" (regular) Schnitt verfügbar sind,
    müsstest Du die Auswahl der ComboBox begrenzen, was z. B. über Filter ginge:

            private void VS_Editor1_Load(object sender, EventArgs e)
            {
                FontFamily[] Schriftart = (from f in  FontFamily.Families
                                          where f.IsStyleAvailable(FontStyle.Regular)
                                          select f).ToArray();
    
                comboBox1.DataSource = Schriftart;
                // ... weiter wie bisher
            }
    

    Als nächsten Schritt solltest Du Code zu reduzieren, da sehr viel kopiert wurde.
    So kannst Du z. B. die Änderungen für die Schriftgröße mit einer einzigen Ereignis-Behandlung erledigen.
    Ein (vereinfachter) Vorschlag wäre z. B.:

            private void fontSizeButton_Click(object sender, EventArgs e)
            {
                var fontSizeButton = sender as Button;
                try
                {
                    // FontSize über den Text (alternativ über Tag-Eigenschaft)
                    float fontSize = Single.Parse(fontSizeButton.Text);
                    FontFamily family = new FontFamily(this.comboBox1.Text);
                    FontStyle style = this.richTextBox1.SelectionFont.Style;
    
                    if (family.IsStyleAvailable(style))
                    {
                        Font newFont = new Font(family, fontSize, style, GraphicsUnit.Pixel);
                        this.richTextBox1.SelectionFont = newFont;
                        this.fontnameTextBox.Text = richTextBox1.SelectionFont.Name;
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message, "fontSizeButton_Click");
                }
            }
    

    dabei werte ich den Text des Buttons aus um die Schriftgröße zu bestimmen -
    alternativ könnte man auch die Tag-Eigenschaft des Buttons dafür verwenden.
    Diese Routine kannst Du nun allen Schriftgrößen-Schaltflächen dem Click-Ereignis zuweisen
    (und die bisherigen Routinen entsorgen).

    Ein entsprechendes Vorgehen bietet sich auch für die Schriftstile und anderes mehr an.

    Gruß Elmar

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:25
    Samstag, 5. Mai 2012 07:37
  • Hallo Elmar

    Danke für die Antwort.

    Ein Teil  Deiner Anweisungen wurde fertiggestellt  und der Code um 691 Zeilen reduziert.

    Die Schriftgröße wird  jetzt  Schrittweise um 0,75 erhöht (finde ich besser), aber die Anzeige stimmt nicht mehr überein (fontSize8_Button =  FontSize 6  ,  fontSize9_Button = FontSize 6,75 ….) 

    Wenn ich den Text in den Eigenschaften anpasse, verändert sich die Schriftgröße nochmal.     Ich habe ToolTip für die fontSizeButtons hinzugefügt, die jeweils die korrekte Schriftgröße (fontnameTextBox)  anzeigen und werde ForeColor für alle fontSizeButtons auf Control einstellen. 

    Die Buttons, die ich  über  die fontSizeButtns gelegt habe sind durch Deinen neuen Code nicht mehr notwendig. Sie wurden umgeschrieben (fontSizeButton22  =  FontSize16,5   bis   fontSizeButton35   =   FontSize 26,25).

    Hoffentlich habe ich nicht zu unverständlich geschrieben.

    Danke auch für:

    • > Debug.WriteLine(ex.Message, "fontSizeButton_Click");

    So bemerkt der Anwender nicht mehr, wenn ein Fehler auftritt.

    Ich arbeite weiterhin an der Verbesserung und es werden sicher noch viele Probleme auftauchen, die ich selbst nicht lösen kann.

    Das Programm ist zurzeit stabil.    Optik leicht geändert (noch nicht abgeschlossen).

    Mit freundlichen Grüßen

    Christina


    • Bearbeitet ch.f.1 Samstag, 5. Mai 2012 23:47
    Samstag, 5. Mai 2012 22:53
  • Hallo,

    die andere Größe ergibt sich daraus, das ich (unbdeachterweise) GraphicsUnit.Pixel im Code verwendet habe,
    daraus ergibt sich eine andere Größe als beim Standard GraphicsUnit.Point - das Verhältnis ist 72 (pt) / 96 (px) = 0,75.

    Das einfachste wäre hier, wieder Point zu verwenden, denn Feinheiten
    interessieren Anwender selten, nur wie "groß" das Schriftbild aussieht.

    Weitere Fragen kannst Du gerne stellen.
    Bitte in einem neuen Thread, da dieser langsam unübersichtlich wird.

    Gruß Elmar

    • Als Antwort markiert ch.f.1 Montag, 7. Mai 2012 02:19
    Sonntag, 6. Mai 2012 17:55
  • Hallo Elmar

    Danke für  >  GraphicsUnit .

    >Weitere Fragen kannst Du gerne stellen.

    >Bitte in einem neuen Thread, da dieser langsam unübersichtlich wird.

      OKJ

    Vielen Dank und viele Grüße

    Christina

    Montag, 7. Mai 2012 02:19