user32动画窗口函数没有滑动正确的窗体

本文关键字:窗体 动画 窗口函数 user32 | 更新日期: 2023-09-27 18:25:22

我正在尝试将窗口幻灯片添加到我的一个子窗体中。我将简要介绍一下这个小部分在我的应用程序中的作用。

用户在一系列IP地址中键入。应用程序执行所有ping并以新的形式(动态)显示结果。

以下是我希望它的工作方式:如果用户运行一次ping,幻灯片动画将不会发生任何事情。但是,如果用户单击结果表单上的"重试"控件,新的结果窗口将从旧结果表单的右侧滑出

在结果表单(命名为:Ping_form)上,我将以下内容添加到加载事件中:

[DllImport("user32")]
    static extern bool AnimateWindow(IntPtr hwnd, int time, int flags);
    //Constants
    const int AW_SLIDE = 0X40000;
    const int AW_HOR_POSITIVE = 0X1;
    const int AW_HOR_NEGATIVE = 0X2;
    const int AW_BLEND = 0X80000;

 void ping_Form_Load(object sender, EventArgs e) 
        {
        bool is_Open = false;
        FormCollection fc = Application.OpenForms;
        foreach (Form f in fc)
            {
            if (f.Name == "PSE")
                is_Open = true;
            }
        if (is_Open == false)
            return;
        //Load the Form At Position of Main Form
        int WidthOfMain = Application.OpenForms["PSE"].Width;
        int HeightofMain = Application.OpenForms["PSE"].Height;
        int LocationMainX = Application.OpenForms["PSE"].Location.X;
        int locationMainy = Application.OpenForms["PSE"].Location.Y;
        //Set the Location

        this.Location = new Point(LocationMainX + WidthOfMain, locationMainy + 10);
        //Animate form
        AnimateWindow(this.Handle, 500, AW_SLIDE | AW_HOR_POSITIVE);

        }

但当我运行ping方法时,会创建一个空白表单并滑出,但结果表单看起来很正常。

在这方面,任何导演或建议都会很棒。非常感谢!

user32动画窗口函数没有滑动正确的窗体

尝试调用此函数。显示();调用AnimateWindow之后。