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;
How can I change the font size and color in the button's second line of text?
It's not possible using the .Text
property...
...but you can create a dynamic Bitmap to take the place of the Text, allowing you to format it however you want:
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);
You'll have to figure out the best combination of font sizes, StringFormat layouts, and/or positioning to make it look as desired. There are other DrawString() overloads to render the text in different ways.
Note that there will be a difference in how the control highlights, however. On my system, the entire area of the standard button highlights when the mouse enters. With this approach only the border will highlight since the entire middle of the button is a static image.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With