IDE = Visual Studio 2010
Language = c# .net
Technology = windows forms application
您好, 我有3个标签
Label1详细信息:
label1.text = "Team1";
label1.forecolor = Color.yellow;
Label2详细信息:
label2.text = "Team1";
label2.forecolor = Color.green;
Label3详细信息:
label3.text = "Team1";
label3.forecolor = Color.grey;
现在,我正在尝试的是:
label4.text = "Match between " + label1.text+ " and " +label2.text+ " at " +label3.text ;
但是我输出的所有标签都是相同的颜色,设置为label4。 我希望它以不同的颜色显示。
我尝试过这种解决方案,将不同的标签放在表格中,但它会重叠。
有没有办法连接标签..?
有什么建议吗?
答案 0 :(得分:1)
如果您有意愿,可以创建一个UserControl并覆盖其OnPaint
函数,使用GDI +以不同的颜色绘制这3个文本块。它只需要一个简单的DrawString
电话。
e.Graphics.DrawString("LabelText", this.Font, Brushes.Red, new Point(100, 100));
然后,您可以公开3个公共属性来控制3个文本块和可选的3个颜色属性来控制块的颜色。请注意,您需要使用SolidBrush
中的这些颜色创建OnPaint
,因为这是DrawString
所期望的,如下所示:
using(SolidColorBrush br = new SolidColorBrush(mColor1)
e.Graphics.DrawString("LabelText", this.Font, br, new Point(100, 100));
完整代码:
public partial class MultiColorLabel : Label
{
public MultiColorLabel()
{
InitializeComponent();
}
public string Text1 { get; set; }
public string Text2 { get; set; }
public string Text3 { get; set; }
public Color Color1 { get; set; }
public Color Color2 { get; set; }
public Color Color3 { get; set; }
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var g = e.Graphics;
e.Graphics.DrawString("Match between ", this.Font, Brushes.Black, 0, 0);
var sz = g.MeasureString("Match between ", this.Font).Width;
using (SolidBrush sb = new SolidBrush(Color1))
e.Graphics.DrawString(Text1, this.Font, sb, sz, 0);
sz += g.MeasureString(Text1, this.Font).Width;
e.Graphics.DrawString(" and ", this.Font, Brushes.Black, sz, 0);
sz += g.MeasureString(" and ", this.Font).Width;
using (SolidBrush sb = new SolidBrush(Color2))
e.Graphics.DrawString(Text2, this.Font, sb, sz, 0);
sz += g.MeasureString(Text2, this.Font).Width;
e.Graphics.DrawString(" at ", this.Font, Brushes.Black, sz, 0);
sz += g.MeasureString(" at ", this.Font).Width;
using (SolidBrush sb = new SolidBrush(Color3))
e.Graphics.DrawString(Text3, this.Font, sb, sz, 0);
}
}
这是快照:
答案 1 :(得分:0)
Label.Text只返回一个不是任何格式的字符串。因此,这里的所有文本都将具有相同的label4颜色。您需要在面板控件中添加标签。
答案 2 :(得分:0)
问题:您只是分配其他Text
控件的Label
,因此它只会显示Text
,但会显示其他属性,例如ForeColor
})不会被应用。
解决方案:在我看来,我认为不能直接为单个Label
字符串显示多个colurs。
因此,您可以开发自己的User Control
以显示多个控件中的文本。
或
您可以使用RichTextBox
控件。
答案 3 :(得分:-1)
Text`不会返回整个标签,它只会返回该标签的文本(字符串)。如果你想做你想做的事情,请阅读一些关于图形的帖子。