using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void MoveLabel(int val);//声明代理
bool bWay = true;
Thread td;
private void Form1_Load(object sender, EventArgs e)
{
td = new Thread(new ThreadStart(ThreadFun));
td.Start();
this.button1.Text = "停止";
}
private void button1_Click(object sender, EventArgs e)
{
if(td.ThreadState == ThreadState.Suspended)
{
td.Resume();
this.button1.Text = "停止";
}
else
{
this.button1.Text = "开始";
td.Suspend();
}
}
void SetOffset(int val)
{
this.label1.Location = new System.Drawing.Point(label1.Location.X + val, label1.Location.Y);
}
private void ThreadFun()
{
while (true)
{
int xF = this.Size.Width;
int xL = this.label1.Location.X;
int lblWidth = this.label1.Size.Width;
if (bWay)
{
if (xL + lblWidth < xF)
{
if (this.InvokeRequired)
{
MoveLabel d = new MoveLabel(SetOffset);
object[] arg = new object[] { 1 };//要传入的参数值
this.Invoke(d, arg);
}
}
else
{
bWay = false;
}
}
else
{
if (xL >= 0)
{
if (this.InvokeRequired)
{
MoveLabel d = new MoveLabel(SetOffset);
object[] arg = new object[] { -1 };//要传入的参数值
this.Invoke(d, arg);
}
}
else
{
bWay = true;
}
}
Thread.Sleep(5);
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
td.Abort();
}
}
}
demo 下载:http://download.youkuaiyun.com/source/1584578
简单例子: