我的程序构架是这样的。
 先是有个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分相送。  说的比较罗嗦。不好意思。

解决方案 »

  1.   

    看糊涂了,不过大概明白你的意思了。
    这个Loading 你用showdialog试试
      

  2.   

    大概明白了,
    1)用showdialog显示出你的loading2)在你控件透明度的代码里放入 Application.DoEvents()试试
      

  3.   

    cancerser(新的可以)   
     
    改了以后能显示一部分拉,但是我上面的一个picturebox 里面的一个GIF 动画却一直不动。
    能不能换一种方法解决。我觉得c#里面应该有跟好的方法。大家给个意见啊!
      

  4.   

    我狂迷糊,在线程启动前 启动你那Loading。
    或者干脆就在loading里 获取信息,结束后 在传给你的主窗口
    最后显示主窗口,这样你那破窗口都不用隐藏了~
      

  5.   

    问题是我的数据是由主窗体里面的一个com控件获得的。
    所以必须先有主窗体才能获得数据。辛苦大家了!嘎嘎~~~