用委托设置Lable的颜色出了问题
我的项目里需要根据串口接收到的不同的数据来改变一个 Lable 的显示颜色,蓝色和绿色,于是做了一个下面的委托:delegate void SetLableCoLor(Label LB, Color Colorkind);
public static void SetLableForeColor(Label LB, Color Colorkind)
{
if (LB.InvokeRequired)
{
SetLableCoLor SLC = SetLableForeColor;
SLC.Invoke(LB, Colorkind);
}
else
{
if (Colorkind == Color.Blue)
{
LB.ForeColor = Color.Blue;
}
else if (Colorkind == Color.Green)
{
LB.ForeColor = Color.Green;
}
}
}
做一个按钮进行测试:
private void button1_Click(object sender, EventArgs e)
{
SetLableString SLS = new SetLableString(LableDisplyString);
SLS.Invoke(label1, "设置标签颜色为蓝色");
SetLableCoLor SETCL = new SetLableCoLor(SetLableForeColor);
SETCL.Invoke(label1,Color.Blue);
}
结果正确,可以改变颜色,但是,把这段程序放到串口接收到数据时,改变标签颜色就出错。显示:
"System.StackOverflowException"类型的未处理异常,在 System.Windows.Forms.dll 中发生