RichTextBox font style button for Bold and/or Italic (how to code so more than one can be chosen instead of replacing

前端 未结 5 841
小鲜肉
小鲜肉 2021-01-27 19:48

Right now I am using some buttons with the following code:

richTextBox1.SelectionFont = new Font(\"Tahoma\", 12, FontStyle.Bold);
richTextBox1.SelectionColor = S         


        
相关标签:
5条回答
  • 2021-01-27 20:30

    Sharing a VB.NET Implementation:

    Set Bold

     Private Sub BoldToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BoldToolStripMenuItem.Click
    
    If Not RichTextBox1.SelectionFont Is Nothing Then
    
                Dim currentFont As System.Drawing.Font = RichTextBox1.SelectionFont
                Dim newFontStyle As System.Drawing.FontStyle
    
                If RichTextBox1.SelectionFont.Bold = True Then
                    newFontStyle = FontStyle.Regular
                   
                    BoldToolStripMenuItem.Checked = False
                Else
                    newFontStyle = FontStyle.Bold
                  
                    BoldToolStripMenuItem.Checked = True
                End If
    
                RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, RichTextBox1.SelectionFont.Style Xor FontStyle.Bold)
    
            End If
        End Sub
    

    Set Italic

    Private Sub ItalicToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ItalicToolStripMenuItem.Click
    
     If Not RichTextBox1.SelectionFont Is Nothing Then
    
                Dim currentFont As System.Drawing.Font = RichTextBox1.SelectionFont
                Dim newFontStyle As System.Drawing.FontStyle
    
                If RichTextBox1.SelectionFont.Italic = True Then
                    newFontStyle = FontStyle.Regular
                   
                    ItalicToolStripMenuItem.Checked = False
                Else
                    newFontStyle = FontStyle.Italic
                    
                    ItalicToolStripMenuItem.Checked = True
                End If
    
                RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, RichTextBox1.SelectionFont.Style Xor FontStyle.Italic)
    
            End If
        End Sub
    

    Set Underline

     Private Sub UnderlineToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UnderlineToolStripMenuItem.Click
    
      If Not RichTextBox1.SelectionFont Is Nothing Then
    
                Dim currentFont As System.Drawing.Font = RichTextBox1.SelectionFont
                Dim newFontStyle As System.Drawing.FontStyle
    
                If RichTextBox1.SelectionFont.Underline = True Then
                    newFontStyle = FontStyle.Regular
                   
                    UnderlineToolStripMenuItem.Checked = False
                Else
                    newFontStyle = FontStyle.Underline
                   
                    UnderlineToolStripMenuItem.Checked = True
                End If
    
                RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, RichTextBox1.SelectionFont.Style Xor FontStyle.Underline)
    
            End If
        End Sub
    

    RichTextBox SelectionChanged Event

     Private Sub RichTextBox1_SelectionChanged(sender As Object, e As EventArgs) Handles RichTextBox1.SelectionChanged
    
     If RichTextBox1.SelectionFont.Bold = True Then
    
                  
                    BoldToolStripMenuItem.Checked = True
                Else
    
                  
                    BoldToolStripMenuItem.Checked = False
                End If
    
     If RichTextBox1.SelectionFont.Italic = True Then
    
               
                ItalicToolStripMenuItem.Checked = True
            Else
    
              
                ItalicToolStripMenuItem.Checked = False
            End If
    
     If RichTextBox1.SelectionFont.Underline = True Then
    
                   
                    UnderlineToolStripMenuItem.Checked = True
                Else
    
                  
                    UnderlineToolStripMenuItem.Checked = False
                End If
    
    End Sub
    
    0 讨论(0)
  • 2021-01-27 20:36

    use this code

    richTextBox1.Font = new Font("Tahoma", 12, FontStyle.Bold | FontStyle.Italic);
    
    0 讨论(0)
  • 2021-01-27 20:45

    What you really need to change both existing and coming text is this:

    if (richTextBox2.SelectionLength > 0 ) richTextBox2.SelectionFont =
     new Font(richTextBox1.SelectionFont, FontStyle.Bold | richTextBox1.SelectionFont.Style);
    else richTextBox2.Font =
     new Font(richTextBox1.Font, FontStyle.Bold | richTextBox1.Font.Style);
    

    Note that in order to work the selection must not have a mix of styles..

    Also you probably ought to use CheckBoxes with Appearence=Button

    If you are using those CheckBoxes make sure you don't code their default event CheckedChanged as this would also fire when you set their state in code!

    To switch a Style on and off you can use maybe code like this in the Click events of the style boxes:

    FontStyle style = checkBox1.CheckState == CheckState.Checked ? 
                        FontStyle.Italic : FontStyle.Regular;
    
    if (richTextBox2.SelectionLength > 0) richTextBox2.SelectionFont =
        new Font(richTextBox1.SelectionFont, style | richTextBox1.SelectionFont.Style);
    else richTextBox2.Font =
        new Font(richTextBox1.Font, style | richTextBox1.Font.Style);
    

    This first decides on the new state to set and then set it.

    note that I did not use the Checked Property of the CheckBox! To reflect a selection with a mix of bold and non-bold text we need a third state, so the CheckBoxes should have ThreeState=true.

    Code to set the states on only two style boxes could look like this:

    private void richTextBox2_SelectionChanged(object sender, EventArgs e)
    {
       // mixed state:   
       if (richTextBox2.SelectionFont == null)
       {
         checkBox1.CheckState = CheckState.Indeterminate;
         checkBox2.CheckState = CheckState.Indeterminate;
         return;
       }
       checkBox1.Checked =
          (richTextBox2.SelectionFont.Style & FontStyle.Bold) == FontStyle.Bold;
       checkBox2.Checked =
          (richTextBox2.SelectionFont.Style & FontStyle.Italic) == FontStyle.Italic;
    }
    

    Starting to look a little larger than you thought at the beginning? Well, it is.. take your time!! (And we haven't even begun with Fonts and sizes ;-)

    0 讨论(0)
  • 2021-01-27 20:46

    you need to do something like this..

    in order ot make it italic.

     richTextBox1.SelectionFont = new Font("Tahoma", 12, richTextBox1.SelectionFont.Style | FontStyle.Italic);
    

    //in order to make it bold

    richTextBox1.SelectionFont = new Font("Tahoma", 12, richTextBox1.SelectionFont.Style | FontStyle.Bold);
    
    0 讨论(0)
  • 2021-01-27 20:49

    This Works for me hope it will help you guys...

    private void cmdBold_Click(object sender, EventArgs e)
    {
       Font new1, old1;
       old1 = rtxtBox.SelectionFont;
       if (old1.Bold)
          new1 = new Font(old1, old1.Style & ~FontStyle.Bold);
       else
          new1 = new Font(old1, old1.Style | FontStyle.Bold);
    
       rtxtBox.SelectionFont = new1;
       rtxtBox.Focus();
    }
    
    private void cmdItalic_Click(object sender, EventArgs e)
    {
      Font new1, old1;
      old1 = rtxtBox.SelectionFont;
      if (old1.Italic)
        new1 = new Font(old1, old1.Style & ~FontStyle.Italic);
      else
        new1 = new Font(old1, old1.Style | FontStyle.Italic);
    
      rtxtBox.SelectionFont = new1;      
    
      rtxtBox.Focus();
    }
    
    private void cmdUnderline_Click(object sender, EventArgs e)
    {
      Font new1, old1;
      old1 = rtxtBox.SelectionFont;
      if (old1.Underline)
        new1 = new Font(old1, old1.Style & ~FontStyle.Underline);
      else
        new1 = new Font(old1, old1.Style | FontStyle.Underline);
    
      rtxtBox.SelectionFont = new1;
      rtxtBox.Focus();
    }
    

    Font Size

    private void cmbSize_KeyPress(object sender, KeyPressEventArgs e)
        {
          if (e.KeyChar == 13)
          {
            if (float.Parse(cmbSize.Text.Trim()) == 0)
            {
              MessageBox.Show("Invalid Font Size, it must be Float Number", "Invalid Font Size", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
              cmbSize.Text = "10";
              return;
            }
            if (cmbSize.Text.Trim() != "")
            {
              Font new1, old1;
              old1 = rtxtBox.SelectionFont;
              new1 = new Font(FontFamily.GenericSansSerif, float.Parse(cmbSize.Text.Trim()), old1.Style);
              rtxtBox.SelectionFont = new1;
            }
            rtxtBox.Focus();
          }
        }
    
    0 讨论(0)
提交回复
热议问题