如何在线程中调用窗体(下跪请教)

来源:百度知道 编辑:UC知道 时间:2024/05/05 08:40:54
本人正在做个小程序,需要在我定义的线程方法中创建新的窗体,问题如下:
如果我在线程中采用Show()方法弹出窗体的话,如
Form f = new Form();
f.Show();
此时f窗体就全白了 什么响应都没了

如果我在线程中采用ShowDialog()方法弹出窗体的话,窗体可以正常显示,但线程的执行方法就不能再继续了
我自己也查了查帮助,好像有点关于这方面的帮助,说是使用后台操作窗体,也没太看明白
哪位朋友遇到过这种问题,还请指点一二,我在这儿先谢了
(现在程序就卡在这里不能继续下去了)
Application.DoEvents();加了这句话后好一些
不过窗体不能正常关闭
是不是跟我线程代码在普通类中有关阿

你show出窗体后,给一个Application.DoEvents();命令就可以了。这条命令可以让你的这个线程有时间去更新窗体的显示。
否则他是没法显示的,就会变成一片空白。

把代码贴出来,看你在分线程show窗体后是做什么?是什么原因造成界面假死,
showDialog()是要等待你响应再执行后续操作,所以没有假死.而show()是直接执行后续操作的.要看你后面执行了什么.

把要调用的窗体用Using引用也可以呀

Form f = new Form(); // f 最好申明为静态变量或全局变量

Thread thread = new Thread(new ThreadStart(f.Show))
thread.Start();

不太明白你要实现的效果啊.
是不是要弹出n个form啊?

public partial class Form1 : Form
{

Thread objThd;
public Form1()
{
InitializeComponent();
}

private void ShowForm()
{
Form fr = new Form();
fr.ShowDialog();

}

private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
objThd = new Thread(new ThreadStart(ShowForm));