winforms label1属性连接label2属性

pdkcd3nj  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(154)

label1 text&property和label2 text&property是否可以合二为一,并显示在label3和添加的文本=中?因为我现在使用的是并排使用label1label2

告诉我有没有别的办法
Ps:我在像redblue这样的数据库中定义颜色。

yhuiod9q

yhuiod9q1#

您可以像这样合并文字内容:

label3.Text = label1.Text + " = " + label2.Text;

但是你会失去不同的颜色。不幸的是这是不可能的。有关更多细节,请查看this answer

ifsvaxew

ifsvaxew2#

使用string.format将两个标签文本组合在一起。

label3.Text = string.Format("{0}={1}", label1.Text, label2.Text);
woobm2wo

woobm2wo3#

你可以写你自己的文本图像你的标签3.像here
和。

首先设置label3 AutoSize = false并设置大小。

// Add this lines to InitializeComponent() in yourform.Designer.cs
    this.label1.TextChanged += new System.EventHandler(this.label_TextChanged);
    this.label2.TextChanged += new System.EventHandler(this.label_TextChanged);

    // this is label1 and label2 TextCahanged Event
    private void label_TextChanged(object sender, EventArgs e)
    {
        SetMultiColorText(string.Format("{0} = {1}", label1.Text, label2.Text),label3);
    }

// this method set multi color image text for label(paramter lb)
    public void SetMultiColorText(string Text, Label lb)
    {
        lb.Text = "";
        // PictureBox needs an image to draw on
        lb.Image = new Bitmap(lb.Width, lb.Height);
        using (Graphics g = Graphics.FromImage(lb.Image))
        {
            
            
            SolidBrush brush = new SolidBrush(Form.DefaultBackColor);
            g.FillRectangle(brush, 0, 0,
                lb.Image.Width, lb.Image.Height);
            
            string[] chunks = Text.Split('=');
            brush = new SolidBrush(Color.Black);

            // you can get this colors from label1 and label2 colors... or from db.. or an other where you want
            SolidBrush[] brushes = new SolidBrush[] { 
        new SolidBrush(Color.Black),
        new SolidBrush(Color.Red) };
            float x = 0;
            for (int i = 0; i < chunks.Length; i++)
            {
                // draw text in whatever color
                g.DrawString(chunks[i], lb.Font, brushes[i], x, 0);
                // measure text and advance x
                x += (g.MeasureString(chunks[i], lb.Font)).Width;
                // draw the comma back in, in black
                if (i < (chunks.Length - 1))
                {
                    g.DrawString("=", lb.Font, brush, x, 0);
                    x += (g.MeasureString(",", lb.Font)).Width;
                }
            }
        }
    }

相关问题