第一个问题:我的启动窗体是form1,登陆后显示Main,我这样写的在form1里                this.Hide();
                Main myMain = new Main();
                myMain.Show();我想知道这个this.Hide();,他把form1隐藏了,form1没关闭,form1里的程序还在运行吗(如果有时刻运行的程序)?还是在那停着?
我想彻底干掉他,但如果关了他close,主窗体没了,就都关了,我该怎么做?我只是说这个原理,毕竟后面要总用到hide(),不能把所有的都隐藏呀,必须想办法除掉他,一般都怎么做的?总感觉隐藏不是办法,第二个问题:我想在  webBrowser这个控件里显示资源文件里的html文件,我这样写的   private void anquan_Load(object sender, EventArgs e)
        {
           
            this.webBrowser2.DocumentText = Properties.Resources.error;//error是资源文件里的error.html        }
可他怎么显示空白呀?我该怎么写?才能显示他的内容呀 ?
第三个问题:我在主窗体Main里有三个按纽,一个panel,我想每次点一个按纽,就在panel了显示不同的用户控件,我是这样写的  private void button1_Click(object sender, EventArgs e)
        {
            this.panel.Controls.clear();
            zhuomian myzhuomian = new zhuomian();
            this.panel.Controls.Add(myzhuomian);        }
  private void button2_Click(object sender, EventArgs e)
        {
            this.panel.Controls.clear();
            kuanpin mykuanpin  = new kuanpin ();
            this.panel.Controls.Add(mykuanpin );        }我想问下,如果我先点了button1,然后在点了button2,我设置 了this.panel.Controls.clear();把他以前的东西都清除了,所以才显示button2的用户控件kuanpin ,但这个时候刚才的zhuomian控件被释放了吗?好象他俩同时在运行?如果我点了三个按纽,那三个用户控件的东西实际都在运行?是不是呀?我昨天测试了,在zhuomian 用户控件里播放个音乐,然后我点button2,界面上是显示的kuanpin 的内容,但音乐没停,是不是代表那个用户控件还在运行呀?我该怎么释放他呀?不然内存就耗没了,

解决方案 »

  1.   

    先把form1 hide() 打开其他form之后再close()
      

  2.   

    1.隐藏后程序还在运行,如果真的不想要这个窗体的,可在程序主入口点启动其他窗体的,
    static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {            
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
            }
        }
      

  3.   

    不行,我form1里有一些开始运行的程序和判断,然后才进的MainForm
      

  4.   

    第三个问题,你是用axWindowsMediaPlayer控件播放的音乐?
      

  5.   

    3tabcontrol,切换的时候,吧media也暂停
      

  6.   

    第一个问题的正解还是启动其他窗体,至于上面你说的程序和判断,如果没有界面的话不妨将它们放到Main方法里显示主窗体语句之前,如果有界面也没关系,可以在显示主窗体前显示,就是不放在Application.Run方法里。
    第二个问题DocumentText属性是不是在这里不合适呀,应该有个url之类的,具体不记得了。
    第三个问题,你不妨把所有要显示的东西先定义好,设置其visible比较好,或者将其Dock设置为Fill,然后要显示哪个就调用它的BringToFront方法也可以。这样各方面都比较好,至于要消毁它?没必要吧!否则如果我反复点这三个按钮,那你的程序可真是死去活来了!
      

  7.   

    要暂停音乐的话,如果你用axWindowsMediaPlayer的话里面有个停止的方法,不只是停止,播放,前进,后退,暂停,都可以!
      

  8.   

    13楼的意思,一下把所有要加载的用户控件都载入然后通过visible来控制?都载入不慢?都载入他不都执行了?
      

  9.   

    用户控件的载入要有一个执行过程是不假,但绝不是你想的那样,再说早载入早执行,早晚都得执行,免不了的,而且这样的话,只执行一次就够了,要用你前面的方法,每点一次按钮都要执行一次,那还有完吗?停止的时机不用在各按钮里控制吧?你可以在用户控件的VisibleChanged事件里设置,如果为false就停止
      

  10.   


    刚才一是,发现,我每个用户控件的load里有    private void weihu_Load(object sender, EventArgs e)
            {            this.webBrowser3.Url = new Uri("http://www.sina.com")
               
            }
    有这样的代码,一下全载入,起不是全开始执行了?可怕呀?
      

  11.   

    怎么能让我在main()里载入所有用户控件的时候,不让用户控件执行他们各自的load事件,只有Visible为true才执行,为false,立刻停止
      

  12.   

    第二个问题啊 
    代码如下:
    object   o1   =   null,   o2   =   null,   o3   =   null,   o4   =   null;   
    webBrowser1.Navigate("c:\\1.html",ref   o1,ref   o2,ref   o3,ref   o4);这是加载的本地自己写好的HTML文件,参数“c:\\1.html”是你的指向的路径。当然你可以代码获取你程序的路径来设置该参数
      

  13.   


    谢谢,你这个是用的路径,应该可以了,但想问下,用资源文件里的html,怎么实现啊?
      

  14.   

    一下载入所有用户控件,然后.Visible = false,我感觉不好,全载入了,都在运行,即使你.Visible = false也都在运行,太耗内存了,感觉没有用一个载入一个好吧?
      

  15.   

              MainForm mf = new MainForm();
                mf.Show(this);
                this.Close();
      

  16.   

    虽然贴子结了,但我还是忍不住问一句,你以为你写的控件是什么?个个都是Windows7吗?还有那个load事件里为WebBrowser设置URL的那句,如果你不想让它在加载时运行,完全可以去掉,然后在控件里声明一个string类型的属性URL,在用的时候先定义控件实例,然后在加一句代码<控件1>.URL=“...”;也就行了。你可以想下IE7中那样的多页浏览器,要真如你所想还能运行的起来吗?