【问题标题】:Styling text within a button在按钮中设置文本样式
【发布时间】:2013-05-30 14:29:45
【问题描述】:

我想在我的按钮中有一个多行文本字符串,如下所示:

myButton.Text = "abc" + Environment.NewLine + "123";

是否可以单独设置每一行的样式?例如我希望第一行粗体,第二行斜体?

如果这是不可能的,有人可以推荐一种替代方法来实现这一点吗?

谢谢

【问题讨论】:

  • 你不能用股票按钮来做到这一点。但是从 Button 继承你自己的类并覆盖绘图,你可以。
  • 谢谢 - 我不知道从哪里开始做这个,你能指出我的资源或提供一个非常基本的例子吗?再次感谢

标签: c# winforms button


【解决方案1】:

要做到这一点可能需要做很多工作,但这是一个开始。

这将是继承的类:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class MyButton : Button
    {
        private Boolean _pressed = false;

        protected override void OnPaint(PaintEventArgs pevent)
        {
            if (_pressed)
                ControlPaint.DrawButton(pevent.Graphics, pevent.ClipRectangle, ButtonState.Pushed);
            else
                ControlPaint.DrawButton(pevent.Graphics, pevent.ClipRectangle, ButtonState.Normal);

            pevent.Graphics.DrawString("Line 1", new System.Drawing.Font("Arial", 8.5f, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, new System.Drawing.PointF(2.0f, 2.0f));
            pevent.Graphics.DrawString("Line 2", new System.Drawing.Font("Tahoma", 14.0f, System.Drawing.FontStyle.Bold), System.Drawing.Brushes.Red, new System.Drawing.PointF(2.0f, 17.0f));
        }

        protected override void OnMouseUp(MouseEventArgs mevent)
        {
            _pressed = false;
            base.OnMouseUp(mevent);
        }

        protected override void OnMouseDown(MouseEventArgs mevent)
        {
            _pressed = true;
            base.OnMouseDown(mevent);
        }
    }
}

您必须以编程方式将MyButton 对象添加到表单中,或者添加一个普通按钮并进入Form1.Designer.cs 并将其类型从Button 更改为MyButton。

请注意,我不是使用Text1 + Environment.NewLine + Text2,而是通过精确定位进行绘制。这样您就可以准确计算出它需要的位置。

您可以利用Graphics.MeasureString 进一步帮助自己。这可以帮助您确定您绘制的字符串的确切大小,以了解它占用了多少空间。

您还需要确保按钮始终足够大,以正确显示您要显示的文本。也可以在覆盖中完成,或者只是在设计时将其设置为设置大小并使其适合文本。随便哪一个。

【讨论】:

    猜你喜欢
    • 2015-05-11
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    相关资源
    最近更新 更多