我的程序构架是这样的。
先是有个app类。
public class app
{
public static loading myloading = null;
public static main_Form myMain = null;
public static string u_name;
public static int u_flag;
private static loading LoadF = null;
public app()
{
}
[STAThread]
static void Main()
{
Login myLogin = new Login();
Application.Run(myLogin); //刚开始的时候运行login 。
if(myMain!=null) //等验证成功后打开主程序。
{
Application.Run(myMain);
}
}
问题在于,在myMain里面有比较大的数据要从网络上来传送,所以我在 myMain 的load 里面开了个线程 用来加载数据。代码如下。
private void main_Form_Load(object sender, System.EventArgs e)
{
myT = new Thread(new ThreadStart(loadData));
myT.Start();
this.Opacity = 0; //这里我不知道怎么办,就先把窗体透明度设为0 app.loadLoading(); //这个在后面有交代,问题也就出在这里。
} private void loadData()
{
//执行一些加载数据的操作。
this.Opacity = 100; //把窗体显示出来。
app.closeLoad(); //这个也是在app里面定义的。用来关闭窗体
myL.Abort(); }我现在想在数据加载完毕之前显示一个loading 窗体。
于是我在 app类里面 public static loading myloading = null;
还写了两个静态方法。
public static void loadLoading() //显示窗体
{
LoadF = new loading();
LoadF.Show();
}
public static void closeLoad() //关闭窗体。
{
LoadF.Close();
}等成功登陆系统后,主窗体透明度变成100,loading窗体也显示出来了。但是显示的是个反白的窗体。
当数据加载完毕后,主窗体显示出来,loading也能被关闭掉。 问题就在于loading显示的时候不正常,不能交互。
望各位大哥帮忙解决 100分相送。 说的比较罗嗦。不好意思。
先是有个app类。
public class app
{
public static loading myloading = null;
public static main_Form myMain = null;
public static string u_name;
public static int u_flag;
private static loading LoadF = null;
public app()
{
}
[STAThread]
static void Main()
{
Login myLogin = new Login();
Application.Run(myLogin); //刚开始的时候运行login 。
if(myMain!=null) //等验证成功后打开主程序。
{
Application.Run(myMain);
}
}
问题在于,在myMain里面有比较大的数据要从网络上来传送,所以我在 myMain 的load 里面开了个线程 用来加载数据。代码如下。
private void main_Form_Load(object sender, System.EventArgs e)
{
myT = new Thread(new ThreadStart(loadData));
myT.Start();
this.Opacity = 0; //这里我不知道怎么办,就先把窗体透明度设为0 app.loadLoading(); //这个在后面有交代,问题也就出在这里。
} private void loadData()
{
//执行一些加载数据的操作。
this.Opacity = 100; //把窗体显示出来。
app.closeLoad(); //这个也是在app里面定义的。用来关闭窗体
myL.Abort(); }我现在想在数据加载完毕之前显示一个loading 窗体。
于是我在 app类里面 public static loading myloading = null;
还写了两个静态方法。
public static void loadLoading() //显示窗体
{
LoadF = new loading();
LoadF.Show();
}
public static void closeLoad() //关闭窗体。
{
LoadF.Close();
}等成功登陆系统后,主窗体透明度变成100,loading窗体也显示出来了。但是显示的是个反白的窗体。
当数据加载完毕后,主窗体显示出来,loading也能被关闭掉。 问题就在于loading显示的时候不正常,不能交互。
望各位大哥帮忙解决 100分相送。 说的比较罗嗦。不好意思。
这个Loading 你用showdialog试试
1)用showdialog显示出你的loading2)在你控件透明度的代码里放入 Application.DoEvents()试试
改了以后能显示一部分拉,但是我上面的一个picturebox 里面的一个GIF 动画却一直不动。
能不能换一种方法解决。我觉得c#里面应该有跟好的方法。大家给个意见啊!
或者干脆就在loading里 获取信息,结束后 在传给你的主窗口
最后显示主窗口,这样你那破窗口都不用隐藏了~
所以必须先有主窗体才能获得数据。辛苦大家了!嘎嘎~~~