Announcement

Collapse
No announcement yet.

Bold und Italic in einer Textbox

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bold und Italic in einer Textbox

    Hallo zusammen, bin neu hier.

    Ich habe eine Textbox und möchte mit Checkboxen gerne die Schrift verändern.
    Checkbox1 = Bold
    Checkbox2 = Italic
    Checkbox3 = Underline

    Einzelnd funktionert das alles, aber ich möchte gern das die Schrift fett und kursiv zur selben Zeit wird. Und wenn ich dann z.B bei Bold das Häckchen wegklicke soll auch die Schrift nur noch kursiv sein.

    Man könnte natürlich unendlich if Abfragen starten:
    if (this.CheckBold == true && this.CheckItalic == true)
    this.Textbox1.Font = new Font(this.Font, Fontstyle.Bold | Fontstyle.Italic)

    Ich denke, dass es so nicht vorgesehen ist. Es muss doch sowas wie einen Fontstyle geben den ich der Textbox übergeben kann. Ich weiß leider nicht wie man das umsetzt.

    Mfg

  • #2
    Hallo,

    da die Font-Eigenschaften Bold, etc. (leider) schreibgeschützt sind müsste jedesmal eine neue Font erstellt werden.

    Daher würde ich anstatt einer normalen TextBox eine RichtTextBox verwenden denn diese kann das besser.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Code:
      public Form1() { 
        CheckBox[] chkFont = new CheckBox[3]; 
        string[] style ={"Fett", "Kursiv", "Unterstrichen"}; 
        for(int i = 0; i < 3; i++) { 
          chkFont[i] = new CheckBox(); 
          chkFont[i].Location = new Point(25, 45 + i*25); 
          chkFont[i].Text = style[i]; 
          chkFont[i].CheckedChanged += new EventHandler(CheckboxChanged); 
        } 
        this.Controls.AddRange(chkFont); 
        InitializeComponent(); 
      }
      
      // Ereignishandler 
      private void CheckboxChanged(object sender, EventArgs e) { 
        FontStyle[] fs = {FontStyle.Bold, FontStyle.Italic, FontStyle.Underline}; 
        FontStyle newFontStyle = 0; 
        for(int i = 0; i < 3; i++) { 
          if(((CheckBox)this.Controls[i]).Checked) 
            newFontStyle |= fs[i]; 
        } 
        textBox1.Font = new Font(textBox1.Font, newFontStyle); 
      }
      hier habe ich den Code dafür gefunden. Damit klappt das, aber es sieht nicht ganz einfach aus. Würde das auch gerne mit einem Event lösen, wie in diesem Code. Gibt es so eine Möglichkeit bloß ein bisschen vereinfacht? Oder wäre das schon so die kürzeste Möglichkeit mit eine Textbox, ohne auf eine richbox zurück zu greifen?

      Mfg

      Comment


      • #4
        Hallo,

        Oder wäre das schon so die kürzeste Möglichkeit mit eine Textbox
        Ich denke ja.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Hallo ich bins nochmal. Habe hier einen eigenen Lösungsvorschlag, falls das irgendwann jemanden interessiert.

          Code:
          private void Abfrage(object sender, EventArgs e)
                  {
                      FontStyle[] Stil = { FontStyle.Bold, FontStyle.Italic, FontStyle.Underline };
                      FontStyle stil = 0;
                      if (Fett.Checked)
                          stil |= Stil[0];
                      textBox2.Font = new Font(this.Font, stil);
                      if (Unterstrichen.Checked)
                          stil |= Stil[2];
                      textBox2.Font = new Font(this.Font, stil);
                      if (this.Kursiv.Checked)
                          stil |= Stil[1];
                      textBox2.Font = new Font(this.Font, stil);
                  }
          ////////////////////////////////////////////////////////////////////////////////////////////////////
          //Im designer.cs muss noch das Folgende eingestellt werden:
          
                      this.Unterstrichen.CheckedChanged += new System.EventHandler(this.Abfrage);
                      this.Fett.CheckedChanged += new System.EventHandler(this.Abfrage);
                      this.Kursiv.CheckedChanged += new System.EventHandler(this.Abfrage);
          Mfg

          Comment

          Working...
          X