首页 新闻 会员 周边

winform gif不显示的问题

0
悬赏园豆:30 [已解决问题] 解决于 2015-11-09 07:32

单独窗体运行时没有问题的,然后主窗体调用的时候,就有问题,其实就是一个正在缓冲的效果

 const int SW_SHOWNOACTIVATE = 4;
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern int ShowWindow(IntPtr hWnd, short cmdShow);

就用这个掉用的时候就出问题(就是一个picturebox绑定了一个gif的图片),单独运行的时候是没有问题的。

  BufferForm bf = new BufferForm();
            ShowWindow(bf.Handle, SW_SHOWNOACTIVATE);
            System.Threading.Thread.Sleep(5000);
            bf.Close();

看了网上的重写onPaint事件,但是问题还是解决不了

c#
_Vegetables的主页 _Vegetables | 小虾三级 | 园豆:586
提问于:2015-11-07 19:32
< >
分享
最佳答案
1

第一次回复:线程的问题吧,将System.Threading.Thread.Sleep(5000); bf.Close();这两句注释掉试试

第二次回复:

Form1 f1 = new Form1();
ShowWindow(f1.Handle, SW_SHOWNOACTIVATE);
ManualResetEvent mre = new ManualResetEvent(false);
ThreadPool.RegisterWaitForSingleObject(mre, (state, timeout) =>
{
    Invoke(new Action(() =>
    {
        ((Form1) state).Close();
    }));
}, f1, 5000, true);
收获园豆:30
jello chen | 大侠五级 |园豆:7306 | 2015-11-08 01:29

还是没有效果,唉,我都不晓得咋写了。单独运行时OK的。。

_Vegetables | 园豆:586 (小虾三级) | 2015-11-08 12:47

@_Vegetables: 写个demo发我?

jello chen | 园豆:7306 (大侠五级) | 2015-11-08 16:03

@jello chen: 麻烦留个邮箱,谢谢。Demo已经准备好,麻烦给看下

_Vegetables | 园豆:586 (小虾三级) | 2015-11-08 18:23

@_Vegetables: jello_chen@live.com

jello chen | 园豆:7306 (大侠五级) | 2015-11-08 19:11

@jello chen: 已发送,谢谢了

_Vegetables | 园豆:586 (小虾三级) | 2015-11-08 19:20

@_Vegetables: 原因是ShowWindow()和Form.WindowState冲突,将Form1.WindowState改为Normal,重新运行。如果需要设置成最大化,有两种方式:

1.Form1.WindowState=System.Windows.Forms.FormWindowState.Maximized;

   然后,用f1.Show()代替ShowWindow(f1.Handle,4);

2.先调用ShowWindow(f1.Handle,4),然后设置Form1.WindowState=System.Windows.Forms.FormWindowState.Maximized;

jello chen | 园豆:7306 (大侠五级) | 2015-11-08 21:44

@jello chen: 万分感谢!!!

_Vegetables | 园豆:586 (小虾三级) | 2015-11-09 07:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册