如何在运行时将文本框的文本设置为粗体?

Posted

技术标签:

【中文标题】如何在运行时将文本框的文本设置为粗体?【英文标题】:How do I set a textbox's text to bold at run time? 【发布时间】:2011-03-06 13:34:36 【问题描述】:

我正在使用 Windows 窗体,并且我有一个文本框,如果它是某个值,我偶尔会希望将文本设置为粗体。

如何在运行时更改字体特征?

我看到有一个名为 textbox1.Font.Bold 的属性,但这是一个仅限获取的属性。

【问题讨论】:

【参考方案1】:

字体本身的粗体属性是只读的,但文本框的实际字体属性不是。您可以将文本框的字体更改为粗体,如下所示:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);

然后又回来:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);

【讨论】:

谢谢!哇,这比我想象的要容易得多。所以我想这意味着字体就像一个字符串,一旦你创建它,你就不能改变它。你只能声明它的一个新实例。 是的,它的行为类似于字符串,因为一旦创建就无法更改其状态,即它是immutable。然而,虽然有 MSDN 文章提到 Font 是不可变的,但 Font 本身的实际参考并没有说明这一点。 对我有用的链接按钮:button.Font.Bold = true 可以对部分文本做同样的事情吗?我的意思是我只想突出显示文本的一部分。 @Anil - 为了回答这个问题并为后代,是的。与其将样式更改应用于一般字体,不如将其应用于选择字体,如下所示: textBox1.SelectionFont = new Font(textBox1.Font, FontStyle.Bold);这与 AppendText 以及随后更改回 FontStyle.Regular (或任何样式的初始状态)相结合,将实现您想要的。【参考方案2】:

根据您的应用程序,您可能希望在文本更改或相关文本框的焦点/取消焦点时使用该字体分配。

下面是它的外观示例(空表单,只有一个文本框。当文本读取为“粗体”时,字体变为粗体,不区分大小写):

public partial class Form1 : Form

    public Form1()
    
        InitializeComponent();
        RegisterEvents();
    

    private void RegisterEvents()
    
        _tboTest.TextChanged += new EventHandler(TboTest_TextChanged);
    

    private void TboTest_TextChanged(object sender, EventArgs e)
    
        // Change the text to bold on specified condition
        if (_tboTest.Text.Equals("Bold", StringComparison.OrdinalIgnoreCase))
        
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Bold);
        
        else
        
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Regular);
        
    

【讨论】:

【参考方案3】:

您可以使用Extension 方法在Regular StyleBold Style 之间切换,如下所示:

static class Helper
    
        public static void SwtichToBoldRegular(this TextBox c)
        
            if (c.Font.Style!= FontStyle.Bold)
                c.Font = new Font(c.Font, FontStyle.Bold);
            else
                c.Font = new Font(c.Font, FontStyle.Regular);
        
    

及用法:

textBox1.SwtichToBoldRegular();

【讨论】:

【参考方案4】:
 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)

【讨论】:

【参考方案5】:

这是切换粗体、下划线和斜体的示例。

   protected override bool ProcessCmdKey( ref Message msg, Keys keyData )
   
      if ( ActiveControl is RichTextBox r )
      
         if ( keyData == ( Keys.Control | Keys.B ) )
         
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Bold ); // XOR will toggle
            return true;
         
         if ( keyData == ( Keys.Control | Keys.U ) )
         
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Underline ); // XOR will toggle
            return true;
         
         if ( keyData == ( Keys.Control | Keys.I ) )
         
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Italic ); // XOR will toggle
            return true;
         
      
      return base.ProcessCmdKey( ref msg, keyData );
   

【讨论】:

以上是关于如何在运行时将文本框的文本设置为粗体?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 HTML5 画布文本设置为粗体和/或斜体?

iOS 在突出显示或选择时将按钮文本更改为粗体

将部分数据工具提示文本设置为粗体

R语言ggplot2可视化:使用element_text函数设置轴标题文本为粗体字体(Bold Font,只设置Y轴的标题文本使用粗体字体)

删除输入文本框的粗体框

如何设置绑定到文本框的标签的可见性?