C# 如何更改Winforms按钮上第二行文本的字体大小和颜色?

C# 如何更改Winforms按钮上第二行文本的字体大小和颜色?,c#,winforms,button,colors,line,C#,Winforms,Button,Colors,Line,如何更改按钮第二行文本中的字体大小和颜色?您想用标准做什么是不可能的(我假设,按钮就是一个例子):字体大小和颜色适用于所有文本;不能仅为文本的一部分更改这些属性 (顺便说一下,按钮中的第二行文本是空行,因此您可能不会注意到其他字体或颜色。您是指第三行文本吗?不可能使用.text属性 …但您可以创建一个动态位图来代替文本,使您可以按照自己的意愿对其进行格式化: this.Controls.Add(button); button.Font = new Font("Arial", 8); but

如何更改按钮第二行文本中的字体大小和颜色?

您想用标准做什么是不可能的(我假设,
按钮
就是一个例子):字体大小和颜色适用于所有文本;不能仅为文本的一部分更改这些属性


(顺便说一下,按钮中的第二行文本是空行,因此您可能不会注意到其他字体或颜色。您是指第三行文本吗?

不可能使用
.text
属性

…但您可以创建一个动态位图来代替文本,使您可以按照自己的意愿对其进行格式化:

 this.Controls.Add(button);
 button.Font = new Font("Arial", 8);
 button.Name = "btn" + idDanych;
 button.Width = 100;
 button.Height = 100;
 button.Location = new Point(0, 0);
 button.Text = "…" + Environment.NewLine + Environment.NewLine + "…";
 button.ForeColor = Color.Black;

您必须找出字体大小、StringFormat布局和/或定位的最佳组合,以使其看起来符合需要。还有其他DrawString()重载以不同的方式呈现文本


但是请注意,控件高亮显示的方式会有所不同。在我的系统中,当鼠标进入时,标准按钮的整个区域将高亮显示。使用这种方法,只有边框将高亮显示,因为按钮的整个中间是静态图像。

框架按钮一次只支持一种字体-您需要使用不同的控件(或创建复合控件)并处理该控件的
单击事件。您能告诉我哪一个控件吗?搜索.net windows按钮控件。有些是免费的,有些是你必须买的。我还看到人们使用只读、禁用的
RichTextBox
和巧妙的样式来“模仿”按钮……这可以通过标准的.Net按钮控件实现;只是不能使用
.Text
.Font
属性。OK。那个么我应该用什么来获得不同颜色的按钮的效果呢text@harbii:如果您想使用标准的
按钮
类,请忘记它。否则,您有两个选择:(a)实现您自己的用户控制(相当高级);或者(b)寻找一个第三方控件库,它支持您所需要的(比DYI更简单但更昂贵)。这类控制库的两个流行供应商是Telerik和Infragistics…也许可以开始在那里寻找。超级。但是我怎样才能改变边界和背景呢?这是可能的,但是你想要改变的事情越多,它就变得越棘手,因为你必须开始做越来越多的事情,使它在所有情况下都能正常工作。如果你想完全定制它,我同意其他人的看法,你最好在网上搜索一个完全可定制的按钮控件……我只想更改背景和边框,你能帮我吗?
        Button button = new Button();
        button.Name = "btn" + idDanych;
        button.Width = 100;
        button.Height = 100;
        button.Location = new Point(0, 0);

        button.Text = "";
        Bitmap bmp = new Bitmap(button.ClientRectangle.Width, button.ClientRectangle.Height);
        using (Graphics G = Graphics.FromImage(bmp))
        {
            G.Clear(button.BackColor);

            string line1 = "( " + Wieszak + " ) " + Haczyk;
            string line2 = KodEAN;

            StringFormat SF = new StringFormat();
            SF.Alignment = StringAlignment.Center;
            SF.LineAlignment = StringAlignment.Near;
            using (Font arial = new Font("Arial", 12))
            {
                Rectangle RC = button.ClientRectangle;
                RC.Inflate(-5, -5);
                G.DrawString(line1, arial, Brushes.Black, RC, SF);
            }

            using (Font courier = new Font("MS Courier", 24))
            {
                SF.LineAlignment = StringAlignment.Center;
                G.DrawString(line2, courier, Brushes.Red, button1.ClientRectangle, SF);
            }
        }
        button.Image = bmp;
        button.ImageAlign = ContentAlignment.MiddleCenter;

        this.Controls.Add(button);