跨线程 子线程中show了一个窗体,如何在主线程控制它? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把这个窗体放在主线程里show吧,然后在子线程里通过委托来控制它。 但现在确实是在子线程中show出来的 开个线程show也是一样么。窗口是另一个线程要操作,那就得public么,还能有什么办法,再委托不可能再Form1中去委托Form2的吧,除非把它的元素都public吧。关闭它的话,给个public的函数操作关闭么。除了子线程委托到STAThread中的元素,其他的都public搞定~ 我个人认为还是楼主最好在主线程里Show窗体,然后通过委托控制。改动大,主要还是因为设计的不合理。 我测试了可以的.使用新开的窗口实例的Invoke方法 这是主线程的,子线程t新开窗口fm Form2 fm; private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(show)); t.Start(); } void show() { fm = new Form2(); Application.Run(fm); }主线程操作子线程的控件 private void button2_Click(object sender, EventArgs e) { fm.Invoke(new Action(() => { fm.textBox1.Text = "2323"; })); } 你能拿的到子线程中窗体的句柄吗?拿的到就可以通过委托,或者Post消息来做啊。 Word::Document类,Paste()字符后,无法定位到刚才黏贴的字符后。 如何调用QQ相册里的图片 C#怎么设置EXCEL的单元格批注属性 Hashtable简单问题!解决即给分! 求好的C#写的论坛源代码 c# 如何向数据库表中插入数据 DataSet中先删除一行,再insert一相同主键的行,再能过adapter.update(),报错,为什么? 新手,哪里有C#.net下咯? 在web如何用c#编写报表得打印。 c#好书,"C# How to Program",快去下载 C#新学者提问 安装程序打包
要操作,那就得public么,还能有什么办法,再委托不可能再Form1中去委托Form2的吧,除非把它的元素都public吧。关闭它的话,给个public的函数操作关闭么。除了子线程委托到STAThread中的元素,其他的都public搞定~
改动大,主要还是因为设计的不合理。
使用新开的窗口实例的Invoke方法
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(show));
t.Start();
}
void show()
{
fm = new Form2();
Application.Run(fm);
}主线程操作子线程的控件 private void button2_Click(object sender, EventArgs e)
{
fm.Invoke(new Action(() =>
{
fm.textBox1.Text = "2323";
}));
}