具体情况是这样的:
有2个窗体,分别是Form1,Form2
Form2在FormLoad方法里加载AnimateWindow效果
Form1点击一个按钮时创建一个Form2实例,并显示。
问题是:当Form2在显示(渐出效果)的时候,Form1就无法进行其它操作了
代码如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f = new Form2(); f.Show(); } }
public partial class Form2 : Form { #region 窗体动画API /// <summary> /// 窗体动画函数 注意:要引用System.Runtime.InteropServices; /// </summary> /// <param name="hwnd">指定产生动画的窗口的句柄</param> /// <param name="dwTime">指定动画持续的时间</param> /// <param name="dwFlags">指定动画类型,可以是一个或多个标志的组合。</param> /// <returns></returns> [DllImport("user32")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); //下面是可用的常量,根据不同的动画效果声明自己需要的 private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志 private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展 private const int AW_HIDE = 0x10000;//隐藏窗口 private const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志 private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略 private const int AW_BLEND = 0x80000;//使用淡入淡出效果 #endregion public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { int x = Screen.PrimaryScreen.WorkingArea.Right - this.Width; int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height; this.Location = new Point(x, y); AnimateWindow(this.Handle, 3000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); } }
百度了2个小时没找出方法,鄙人小菜一枚,还请大家帮忙!
windows.doevent()
把 Form2 设置为 Form1 的子窗体。
还是阻塞的吧?
当Form2在显示(渐出效果)的时候,Form1就无法进行其它操作了
正常都是这样的,因为form1和form2都是运行在UI线程的呀,但是form1的其他线程是可以工作的,比如在渐出效果的时候,还可以去加载数据库的数据,但是无法做其他的UI操作,因为只有一个线程
那用多线程能不能解决问题,或者消息泵什么的?
自己解决了,虽然方法有点挫 - -
代码写在博客里了 http://www.cnblogs.com/xm_cpppp/p/3581450.html