您的位置:首页 > 其它

[记录整理]时钟显示变换底色

2011-12-10 22:12 330 查看
//界面控件之间的跨线程调用,需要委托来处理,否则必定报错。整理代码如下

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);
//  }
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐