在Load事件中关闭窗口,怎样才能不闪烁

解决方案 »

  1.   

    在Load事件里第一行加:this.Visible=false; 试试~
      

  2.   

    在构造函数和Load中都试了不行
      

  3.   

    this.EnableViewState = false;
      

  4.   

     [DllImport("user32.dll")]
            private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
            private const int AW_HOR_POSITIVE = 0x0001;//从左到右打开窗口
            private const int AW_HOR_NEGATIVE = 0x0002;//从右到左打开窗口
            private const int AW_VER_POSITIVE = 0x0004;//从上到下打开窗口
            private const int AW_VER_NEGATIVE = 0x0008;//从下到上打开窗口
            private const int AW_CENTER = 0x0010;//从中央打开
            private const int AW_HIDE = 0x10000;//隐藏窗体
            private const int AW_ACTIVATE = 0x20000;//显示窗体
            private const int AW_SLIDE = 0x40000;
            private const int AW_BLEND = 0x80000;//淡入淡出效果 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
               // Application.ExitThread();
                AnimateWindow(this.Handle, 200, AW_HIDE | AW_VER_NEGATIVE);
            }不知这样是否合楼主的意.
      

  5.   

    当然,FORM_LOAD,那里也可以用:            AnimateWindow(this.Handle, 200, AW_ACTIVATE | AW_VER_POSITIVE);//200指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒。
      

  6.   

    如果有图片的话  将双缓冲设为TRUE
      

  7.   

    我可能没说清楚,
    我是在Load事件中判断了一下条件是否成立,
    如果不成立就关闭窗口,
    但是,这样窗口就会出现一下马上就关闭,就像闪了一下
    我要的效果是条件不成立,窗口不会出现
    条件成立窗口弹出
      

  8.   

    哦...好像有点明白你的想法了.因为之前也遇到过.要是没猜错的话,你是先设定一个条件,然后条件成立的话就,就打开一个新窗体.要是不成立的话,就不做任何操作.这样,给你两个方法试试,
    1.要么你建两个工程,用窗体A去调窗另一个工程的窗体B.当然这会很复杂了.2.要么你就用我上边写的那段代码在FORM_CLOSE作个优化.然后在A调B时 
    A: this.Hide();
    new FORM1().B.ShowDialog();
      

  9.   

    如果需要关闭程序的话:
        static void Main()
            {
                if (条件)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new MainForm());
                }
                else
                    return;
            }
      

  10.   

    被调用窗口    public partial class Form2 : Form
        {
            bool _IsShow = false;
            public Form2()
            {
                InitializeComponent();
                
            }
            private void Form2_Load(object sender, EventArgs e)
            {
                if(!_IsShow)
                {
                    this.Close();
                }
            }
        }调用        private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.ShowDialog();
            }就是Form2闪一下才关闭,我要Form2不出现就直接关闭
      

  11.   


                if(!_IsShow)
                {
                    this.Close();
                }
    改成Application.Exit();
      

  12.   

    this.EnableViewState = false;
      

  13.   

    new Form2()的结果是先调用Form2的构造函数再调用Load,在构造函数中判断并做相应处理试试。
      

  14.   

    我在构造函数中关闭,就会报"不能访问已释放的对象",也就是ShowDialog()抛出异常
      

  15.   

    能在load事件里判断...........怎么不在调用窗体之前判断呢if(条件)
    {
      //条件成立 在去显示窗体
    }
      

  16.   

    在Load中调用是因为我在显示窗口时传入的参数就少一些,也灵活一些,
    如:
    Form2是显示一个订单的窗体,我就只传入一个订单编号就可以了,
    至于其他的,我就直接在数据库中查询可以得到,
    然后按订单是否存在,订单的状态等等来判断是否显示窗体
      

  17.   

    把_IsShow定义成静态的,直接在其他窗体中访问,省事...
      

  18.   

    先设置窗体的Size(10,10);  窗体大小设置小点设置位置:
    this.StartPosition = FormStartPosition.Manual;
    this.Location = new Point(-20, -10);
    判断条件: 成立 在重新设置Size 和 Location   不成立直接关闭
      

  19.   

    方法一:
    Opacity=0;方法二:
    private void Form1_Activated(xx xx,xx xx)
    this.Visible=false;结帐
      

  20.   

    被调用窗口
    C# code
        public partial class Form2 : Form
        {
            public bool _IsShow = false;
            public Form2()
            {
                InitializeComponent();
                
            }
               }
    调用
    C# code
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                if(f._IsShow) f.ShowDialog();
                f.Dispose();
            }
      

  21.   

    重写Show
    参考
    http://topic.csdn.net/u/20090813/19/b5e1e3a9-b6b0-4b31-8f08-0d740eec6258.html