static class Program
    {        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            frmLogin  frm= new frmLogin();
            frm.ShowDialog();
            if (frm.DialogResult ==DialogResult .Yes)
            {
                Application.Run(new frmMain());
            }
           
          
            
        }这是我的启动program.cs里的代码,我的问题是,我在frmMain上弹出另一个窗口,非模态的,然后在这个窗口的底下,用右键菜单关闭它的时候,frmMain会退出,但也不是每次都会退出,一般,关闭三次会有一次让frmMain也退出.
在这些窗口上,任何close的代码都没有写,也没有写任何程序退出的代码,真是奇怪了.有知道的吗

解决方案 »

  1.   

    我的感觉,就好象在frmMain上弹出的窗口,会偶尔的自己变成frmMain,所以在关闭它的时候,程序会总体的退出....但也不是每一次,平均三次会退出一次.
                if (f1 != null && f1.Created )
                {
                    f1.Show();
                    f1.WindowState = FormWindowState.Maximized;
         
                }
                else
                {
                    frmChuangSheJi frm = new frmChuangSheJi();
                    frm.Show();
                }这是弹出窗口的代码...有问题吗
      

  2.   

    f1 在哪里定义的            else
                {
                    f1 = new frmChuangSheJi();
                    f1.Show();
                }
      

  3.   

    f1是frmMain里面的,我现在有点怀疑不是程序退出了,是不是程序崩了啊?你看我这些弹出的代码对不对? 弹出的窗口里面我加了一个dispose,也还是一样的问题..莫名其妙...f1主要是防止弹出的窗口多开
      

  4.   

    frmMain里   public frmChuangSheJi f1 = null;
      

  5.   

    frmChuangSheJi 里面有很多很多变量,还有自定义的结构,这些东西,退出窗口的时候要dispose吗?
    我加了一句this.dispose().问题照旧...给我的感觉,好象是程序崩了一样,但是又不报任何错误..
      

  6.   

    因为我弹出的那个是一个GDI+的绘图窗口,我这是第一次写GDI+软件,所有的核心代码,全都在picturebox1_paint里面,一大堆的变量,局部的,全局的,一大堆的计算,几个大的算法,我TMD全挤在这里面的,哈哈!!!我刚刚加了一个exit的bool,来让它在paint的时候,可以跳出....加了很多地方..然后自己测了一下,已经好了很多了!!!我再问下:我觉得我这种搞法真的很野蛮,到底GDI+的绘图,显示和采集动作,要怎样分开啊?我的意思就是那个g,如果是在另一个子过程里,用这个子过程来画picture1....哎.一句话说不清,我反正是把所有的绘图全放在pic1里面的,这样一来,代码超长!!而且,我还用了一个timer,每500MM就强行让它刷一次.这样搞,是非常占资源的....