C# 如何让线程控制窗体移动
voidsetr(){Formfs=Form.ActiveForm;fs.BackColor=Color.Red;}voidsety(){Formfs=Form.Acti...
void setr()
{
Form fs= Form.ActiveForm;
fs.BackColor = Color.Red;
}
void sety()
{
Form fs = Form.ActiveForm;
fs.BackColor = Color.Yellow;
}
void timetic(object ob,EventArgs e)
{
i++;
if (i ==30)
{
tm.Enabled = false;
this.unsafe_thr.Abort();
Application.Exit();
}
if (i % 2 == 0)
{
this.unsafe_thr = new Thread(new ThreadStart(setr));
}
else
{
this.unsafe_thr=new Thread (new ThreadStart(sety));
}
this.unsafe_thr.Start();
}
上面的代码运行正确,但在sety或者setr中加入fs.location=new point(x,y)
就报错:"线程间操作无效: 从不是创建控件“Form1”的线程访问它。"
那么如何让其他线程控制主窗体的移动呢? 展开
{
Form fs= Form.ActiveForm;
fs.BackColor = Color.Red;
}
void sety()
{
Form fs = Form.ActiveForm;
fs.BackColor = Color.Yellow;
}
void timetic(object ob,EventArgs e)
{
i++;
if (i ==30)
{
tm.Enabled = false;
this.unsafe_thr.Abort();
Application.Exit();
}
if (i % 2 == 0)
{
this.unsafe_thr = new Thread(new ThreadStart(setr));
}
else
{
this.unsafe_thr=new Thread (new ThreadStart(sety));
}
this.unsafe_thr.Start();
}
上面的代码运行正确,但在sety或者setr中加入fs.location=new point(x,y)
就报错:"线程间操作无效: 从不是创建控件“Form1”的线程访问它。"
那么如何让其他线程控制主窗体的移动呢? 展开
4个回答
展开全部
跨线程访问要用invoke方法,查查msdn就知道了,然后用一个委托
我一般用lamda表达试这样简单,
定义一个方法
//跨线程执行控件操作(同步)
private void controls_Update(MethodInvoker method)
{
this.Invoke(method);
}
在某一个按钮事件里写上这个
controls_Update(() =>
{
// 你要执行的操作
});
快给分,不然我晚上趴你家窗户,最好加点分
我一般用lamda表达试这样简单,
定义一个方法
//跨线程执行控件操作(同步)
private void controls_Update(MethodInvoker method)
{
this.Invoke(method);
}
在某一个按钮事件里写上这个
controls_Update(() =>
{
// 你要执行的操作
});
快给分,不然我晚上趴你家窗户,最好加点分
展开全部
使用委托去做
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在form的后台代码中声明一个public的方法,专门处理界面移动
public void MoveForm(Form form) // 注意要传入一个对象实例,不然没有访问权限
{
// ... Add your code here
}
然后使用BackGrounder组建建立一个后台线程去调用该方法,传入你想控制的那个界面的对象实例
public void MoveForm(Form form) // 注意要传入一个对象实例,不然没有访问权限
{
// ... Add your code here
}
然后使用BackGrounder组建建立一个后台线程去调用该方法,传入你想控制的那个界面的对象实例
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正牌小卡 正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询