//界面控件之间的跨线程调用,需要委托来处理,否则必定报错。整理代码如下
private System.Windows.Forms.Timer tmr_clock = new System.Windows.Forms.Timer();
private void tmr_clock_Tick(object sender, EventArgs e)
{
string str;
str = DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString();
this.newText.Text = str;
}
private void Form1_Load(object sender, EventArgs e)
{
tmr_clock.Interval = 500;
tmr_clock.Tick += new EventHandler(this.tmr_clock_Tick);
Thread thread = new Thread(new ThreadStart(ThreadColChangeProc));
thread.IsBackground = true;
thread.Start();
}
private void time_Click(object sender, EventArgs e)
{
colCtrl = !colCtrl;
this.Text = "时钟";
tmr_clock.Enabled = true;
}
#region 设置委托
public delegate void ChangeColHandler(Color col); // 声明委托
private void changeCol(Color col)
{
if (newText.InvokeRequired == true)
{
ChangeColHandler set = new ChangeColHandler(changeCol);//委托的方法参数应和changeCol一致
newText.Invoke(set, new object[] { col }); //此方法第二参数用于传入方法,代替形参col
//newText.BackColor = col;
}
else
{
newText.BackColor = col;
}
}
#endregion
public void ThreadColChangeProc()
{
Random ranCol = new Random();
int R, G, B;
while (true)
{
//while (true)
// {
R = ranCol.Next(0, 255);
G = ranCol.Next(0, 255);
B = ranCol.Next(0, 255);
changeCol(Color.FromArgb(255, R, G, B));
System.Threading.Thread.Sleep(300);
// }
}
}
[记录整理]时钟显示变换底色
最新推荐文章于 2024-04-27 10:05:11 发布